用于处理快照的命令行可执行文件


当使用离线分析以编程方式保存快照时, 可能还需要从这些快照中以编程方式提取数据或报告。JProfiler提供了两个独立的命令行可执行文件, 一个用于从快照中导出视图,一个用于比较快照。

从快照导出视图

可执行文件bin/jpexport 将视图数据导出为各种格式。如果你使用-help 选项执行它, 你将获得有关可用视图名称和视图选项的信息。为简洁起见,以下输出中的重复帮助文本已被省略。

用法: jpexport "快照文件" [全局选项]
              "视图名称" [选项] "输出文件"
              "视图名称" [选项] "输出文件" ...

其中“快照文件”是具有以下扩展名之一的快照文件:
           .jps, .hprof, .hpz, .phd, .jfr
      "视图名称"是下边列出的视图名称之一
      [选项]是一个格式为“-选项=值”的一个选项列表
      "输出文件" 是该导出的输出文件

全局选项:
    -obfuscator=none|proguard|yguard
        对所选混淆器去混淆。默认值为"无",对于其他值,必须指定mappingFile选项。
    -mappingfile=<file>
        所选混淆器的映射文件。
    -outputdir=<输出目录>
        当视图的输出文件是一个相对文件时,将使用基目录
    -ignoreerrors=true|false
        忽略当无法设置视图选项时发生的错误,并继续下一个视图。默认值为"false",即,在第一个错误发生时终止导出。
    -csvseparator=<分隔符>
        CSV导出的字段分隔符。默认为','。

可用的视图名称和选项:
* TelemetryHeap, TelemetryObjects, TelemetryThroughput, TelemetryGC,
  TelemetryClasses, TelemetryThreads, TelemetryCPU
  选项:
    -format=html|csv
        确定导出文件的输出格式。如果不存在,则将根据输出文件的扩展名确定导出格式。
    -minwidth=<像素值>
        graph的最小宽度(以像素为单位)。默认值为800。
    -minheight=<像素值>
        graph的最小高度(以像素为单位)。默认值为600。

* Bookmarks, ThreadMonitor, CurrentMonitorUsage, MonitorUsageHistory
  选项:
    -format=html|csv

* AllObjects
  选项:
    -format=html|csv
    -viewfilters=<以逗号分隔的列表>
        设置导出的视图过滤器。如果设置视图过滤器,则导出的视图将仅显示指定的包及其子包。
    -viewfiltermode=startswith|endswith|contains|equals
        设置视图过滤器模式。默认值为contains。
    -viewfilteroptions=casesensitive
        视图过滤器的布尔选项。默认情况下,没有设置任何选项。
    -aggregation=class|package|component
        选择导出的聚合级别。默认值为类。
    -expandpackages=true|false
        展开包聚合级别中的包节点以显示包含的类。默认值为“false”。对其他聚合级别和csv输出格式没有影响。

* RecordedObjects
  和AllObjects类似,但增加了一些选项:
    -liveness=live|gc|all
        选择导出的活性(Liveness)模式,即,显示活动对象,垃圾回收对象或所有。默认值是活动对象。

* AllocationTree
  选项:
    -format=html|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
        选择导出的聚合级别。默认值为方法。
    -class=<fully qualified class name>
        指定应为其计算分配数据的类。如果为空,则显示所有类的分配。不能与package选项一起使用。
    -package=<fully qualified package name>
        指定应为其计算分配数据的包。如果为空,将显示所有包的分配。不能与class选项一起使用。
    -liveness=live|gc|all

* AllocationHotSpots
  选项:
    -format=html|csv|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
    -class=<fully qualified class name>
    -package=<fully qualified package name>
    -liveness=live|gc|all
    -unprofiledclasses=separately|addtocalling
        选择是将非分析类单独显示还是将其添加到调用类。 默认值为单独显示非分析类。
    -valuesummation=self|total
        确定如何计算热点的时间。默认为“自身”。
    -expandbacktraces=true|false
        以HTML或XML格式展开回溯。默认值为“false”。

* ClassTracker
  和TelemetryHeap类似,但增加了一些选项:
    -class
        被跟踪的类。 如果缺少,则导出第一个跟踪的类。

* CallTree
  选项:
    -format=html|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
    -threadgroup=<线程组名称>
        选择要导出的线程组。如果同时指定thread,则仅在此线程组中搜索线程,否则将显示整个线程组。
    -thread=<线程名称>
        选择要导出的线程。默认情况下,将合并所有线程的调用树。
    -threadstatus=all|running|waiting|blocking|netio
        选择导出的线程状态。默认值是“running”。

* HotSpots
  选项:
    -format=html|csv|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
    -threadgroup=<线程组名称>
    -thread=<线程名称>
    -threadstatus=all|running|waiting|blocking|netio
    -expandbacktraces=true|false
    -unprofiledclasses=separately|addtocalling
    -valuesummation=self|total

* OutlierDetection
  选项:
    -format=html|csv
    -threadstatus=all|running|waiting|blocking|netio
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive

* Complexity
  选项:
    -format=html|csv|properties
    -fit=best|constant|linear|quadratic|cubic|exponential|logarithmic|n_log_n
        应该导出的拟合。 默认值为“最佳”。 没有曲线拟合数据导出到CSV。
    -method=<method name>
        应该为其导出复杂度图的方法名称。 如果未给出,则将导出第一个方法。 否则,将导出以给定文本开头的第一个方法。
    -width=<像素值>
    -height=<像素值>

* ThreadHistory
  和TelemetryHeap类似, 但选项有所变化:
    -format=html

* MonitorUsageStatistics
  选项:
    -format=html|csv
    -type=monitors|threads|classes
        选择应为其计算Monitor统计信息的实体。默认值为“Monitor”。

* ProbeTimeLine
  和ThreadHistory类似,但增加了一些选项:
    -probeid=<id>
        应该导出的探针的内部ID。 运行“ jpexport --listProbes”以列出所有可用的内置探针以及自定义探针名称的说明。

* ProbeControlObjects
  选项:
    -probeid=<id>
    -format=html|csv

* ProbeCallTree
  选项:
    -probeid=<id>
    -format=html|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
    -viewfilteroptions=exclude,casesensitive
    -aggregation=method|class|package|component
    -threadgroup=<线程组名称>
    -thread=<线程名称>
    -threadstatus=all|running|waiting|blocking|netio
        选择导出的线程状态。默认值是“all”。

* ProbeHotSpots
  和ProbeCallTree类似,但选项有所变化或增加:
    -format=html|csv|xml
    -expandbacktraces=true|false

* ProbeTelemetry
  和TelemetryHeap类似,但增加了一些选项:
    -probeid=<id>
    -telemetrygroup
        设置应该被导出的遥测组的基于一的索引。这是指你在探针遥测视图上方的下拉列表中看到的条目。 默认值为“1”。

* ProbeEvents
  选项:
    -probeid=<id>
    -format=html|csv|xml

* ProbeTracker
  和TelemetryHeap类似,但增加了一些选项:
    -probeid=<id>
    -index=<number>
        设置包含跟踪元素的下拉列表的从零开始的索引。默认值是0。

使用导出可执行文件的一些例子如下:

jpexport test.jps TelemetryHeap heap.html

jpexport test.jps RecordedObjects -aggregation=package -expandpackages=true objects.html

jpexport test.jps -ignoreerrors=true -outputdir=/tmp/export
         RecordedObjects objects.csv
         AllocationTree -class=java.lang.String allocations.xml

比较快照

可执行文件bin/jpcompare比较不同的快照, 并将其输出为HTML或机器可读格式。下面转载其-help 输出,同样不做重复解释。

用法: jpcompare "快照文件"[,"快照文件",...] [全局选项]
              "比较名称" [选项] "输出文件"
              "比较名称" [选项] "输出文件" ...

其中“快照文件”是具有以下扩展名之一的快照文件:
           .jps, .hprof, .hpz, .phd, .jfr
      "比较名称"是下边列出的比较名称之一
      [选项]是一个格式为“-选项=值”的一个选项列表
      "输出文件" 是该导出的输出文件

全局选项:
    -outputdir=<输出目录>
        当比较的输出文件是一个相对文件时,将使用基目录
    -ignoreerrors=true|false
        忽略当无法设置比较选项时发生的错误,并继续下一个比较。默认值为"false",即,在第一个错误发生时终止导出。
    -csvseparator=<分隔符>
        CSV导出的字段分隔符。默认为','。
    -sortbytime=false|true
        按修改时间对指定的快照文件进行排序。默认值为false。
    -listfile=<filename>
        读取包含快照文件路径的文件,每行一个快照文件。

可用的比较名称和选项:
* Objects
  选项:
    -format=html|csv
        确定导出文件的输出格式。如果不存在,则将根据输出文件的扩展名确定导出格式。
    -viewfilters=<以逗号分隔的列表>
        设置导出的视图过滤器。如果设置视图过滤器,则导出的视图将仅显示指定的包及其子包。
    -viewfiltermode=startswith|endswith|contains|equals
        设置视图过滤器模式。默认值为contains。
    -viewfilteroptions=casesensitive
        视图过滤器的布尔选项。默认情况下,没有设置任何选项。
    -aggregation=class|package|component
        选择导出的聚合级别。默认值为类。
    -liveness=live|gc|all
        选择导出的活性(Liveness)模式,即,显示活动对象,垃圾回收对象或所有。默认值是活动对象。
    -objects=all|recorded|heapwalker
        比较所有对象(仅限于JVMTI)或记录的对象,或堆遍历器中的对象。对于.jps文件,默认值为所有对象,对于HPROF文件,默认值为堆遍历器。

* AllocationHotSpots
  选项:
    -format=html|csv
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
        选择导出的聚合级别。默认值为方法。
    -liveness=live|gc|all
    -unprofiledclasses=separately|addtocalling
        选择是将非分析类单独显示还是将其添加到调用类。 默认值为单独显示非分析类。
    -valuesummation=self|total
        确定如何计算热点的时间。默认为“自身”。
    -classselection
        计算特定类或包的比较。 指定一个带有通配符的软件包, 例如 'java.awt.*'。

* AllocationTree
  选项:
    -format=html|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -aggregation=method|class|package|component
    -liveness=live|gc|all
    -classselection

* HotSpots
  选项:
    -format=html|csv
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -firstthreadselection
        计算特定线程或线程组的比较。 指定线程组,例如'group.*' 和特定线程组中的线程,如'group.thread'。反斜杠转义线程名称中
        的点。
    -secondthreadselection
        计算特定线程或线程组的比较。 只有在设置了"firstthreadselection"时才可用。如果为空,则使用与"firstthreads
        election"相同的值。 指定线程组,例如'group.*' 和特定线程组中的线程,如'group.thread'。反斜杠转义线程名称中
        的点。
    -threadstatus=all|running|waiting|blocking|netio
        选择导出的线程状态。默认值是“running”。
    -aggregation=method|class|package|component
    -differencecalculation=total|average
        为调用次数选择不同的计算方法。默认值是总次数。
    -unprofiledclasses=separately|addtocalling
    -valuesummation=self|total

* CallTree
  选项:
    -format=html|xml
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals
    -viewfilteroptions=casesensitive
    -firstthreadselection
    -secondthreadselection
    -threadstatus=all|running|waiting|blocking|netio
    -aggregation=method|class|package|component
    -differencecalculation=total|average

* TelemetryHeap
  选项:
    -format=html|csv
    -minwidth=<像素值>
        graph的最小宽度(以像素为单位)。默认值为800。
    -minheight=<像素值>
        graph的最小高度(以像素为单位)。默认值为600。
    -valuetype=current|maximum|bookmark
        为每个快照计算的值的类型。 默认值为当前值。
    -bookmarkname
        如果 valuetype 被设置为 'bookmark', 应当为其计算值的书签的名称。
    -measurements=maximum,free,used
        测量结果显示在比较图中。用逗号连接多个值。默认值是“used”。
    -memorytype=heap|nonheap
        应该分析的内存类型。 默认为“堆”。
    -memorypool
        如果需要分析一个指定内存池,可以用这个参数指定它的名称。默认为空,即没有指定任何内存池。

* TelemetryObjects
  选项:
    -format=html|csv
    -minwidth=<像素值>
    -minheight=<像素值>
    -valuetype=current|maximum|bookmark
    -bookmarkname
    -measurements=total,nonarrays,arrays
        测量结果显示在比较图中。用逗号连接多个值。默认值是“total”。

* TelemetryClasses
  和TelemetryObjects类似, 但选项有所变化:
    -measurements=total,filtered,unfiltered

* TelemetryThreads
  和TelemetryObjects类似, 但选项有所变化:
    -measurements=total,runnable,blocked,netio,waiting

* ProbeHotSpots
  选项:
    -format=html|csv
    -viewfilters=<以逗号分隔的列表>
    -viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
    -viewfilteroptions=exclude,casesensitive
    -firstthreadselection
    -secondthreadselection
    -threadstatus=all|running|waiting|blocking|netio
    -aggregation=method|class|package|component
    -differencecalculation=total|average
    -probeid=<id>
        应该导出的探针的内部ID。 运行“ jpexport --listProbes”以列出所有可用的内置探针以及自定义探针名称的说明。

* ProbeCallTree
  和ProbeHotSpots类似, 但选项有所变化:
    -format=html|xml

* ProbeTelemetry
  和TelemetryObjects类似,但选项有所变化或增加:
    -measurements
        比较图中显示的遥测组测量值以一为索引基数。用逗号连接多个值,例如 "1,2"。默认显示所有测量值。
    -probeid=<id>
    -telemetrygroup
        设置应该被导出的遥测组的基于一的索引。这是指你在探针遥测视图上方的下拉列表中看到的条目。 默认值为“1”。

自动输出格式

大多数视图和比较支持多种输出格式。默认情况下,输出格式是由输出文件的扩展名推断出来的:

如果你想使用不同的扩展,你可以使用format 选项来覆盖输出格式的选择。

分析快照

如果生成的快照中有堆转储,可以使用bin/jpanalyze可执行文件 提前准备好堆转储分析。稍后在JProfiler GUI中打开快照,速度会非常快。 该工具的使用信息如下所示:

用法: jpanalyze [选项] "快照文件" ["快照文件" ...]

其中“快照文件”是具有以下扩展名之一的快照文件:
           .jps, .hprof, .hpz, .phd, .jfr
      [选项]是一个格式为“-选项=值”的一个选项列表

选项:
    -obfuscator=none|proguard|yguard
        对所选混淆器去混淆。默认值为"无",对于其他值,必须指定mappingFile选项。
    -mappingfile=<file>
        所选混淆器的映射文件。
    -removeunreferenced=true|false
        如果未引用或弱引用的对象应被移除。
    -retained=true|false
        计算保留大小(最大对象)。删除未引用将设置为true。
    -retainsoft=true|false
        如果删除了未引用的对象,则指定是否应保留软引用。
    -retainweak=true|false
        如果删除了未引用的对象,则指定是否应保留弱引用。
    -retainphantom=true|false
        如果删除了未引用的对象,则指定是否应保留虚引用。
    -retainfinalizer=true|false
        如果删除了未引用的对象,则指定是否应保留Finalizer引用。

removeUnreferenced ,retained 和所有的retain*命令行选项都对应于堆遍历器选项对话框中的选项。