JProfiler帮助文档Download

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


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

从快照导出视图

可执行文件bin/jpexport将视图数据导出为多种格式。如果您使用-help选项执行它,您将获得可用视图名称和视图选项的信息。 出于简洁的原因,下面的输出中省略了重复的帮助文本。

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

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

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

可用的视图名称和选项:
* 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。

比较快照

可执行文件bin/jpcompare比较不同的快照并将其导出为HTML或机器可读格式。其-help输出如下所示, 同样省略了任何重复的解释。

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

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

全局选项:
    -outputdir=<输出目录>
        当比较的输出文件是一个相对文件时,将使用基目录
    -ignoreerrors=true|false
        忽略当无法设置比较选项时发生的错误,并继续下一个比较。默认值为"false",即,在第一个错误发生时终止导出。
    -csvseparator=<分隔符>
        CSV导出的字段分隔符。默认为','。
    -bitmap=false|true
        在适当的情况下,代替SVG,为主要内容导出位图(bitmap)图片
    -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=recorded|heapwalker|all
        記録されたオブジェクト、ヒープウォーカー(heap walker)内のオブジェクト、またはすべてのオブジェクトダンプ(object 
        dumps)からのオブジェクト数(object counts)を比較します。デフォルトは.jpsファイルの場合は記録されたオブジェクト、HP
        ROF/PHDファイルの場合はヒープウォーカーです。
    -dumpselection=first|last|label
        用于计算比较的所有对象转储。默认值为最后一个值。
    -label
        如果将dumpselection设置为'label',则应计算比较的标签名称。

* 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”。

自动输出格式

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

  • .html

    视图或比较被导出为HTML文件。将创建一个名为jprofiler_images的目录,其中包含HTML页面中使用的图像。
  • .csv

    数据被导出为CSV数据,其中第一行包含列名。

    使用Microsoft Excel时,CSV不是一种稳定的格式。Windows上的Microsoft Excel从区域设置中获取分隔符字符。JProfiler在使用逗号作为小数分隔符的区域中使用分号作为分隔符,在使用点作为小数分隔符的区域中使用逗号。如果您需要覆盖CSV分隔符字符,可以通过设置全局csvseparator选项来实现。

  • .xml

    数据被导出为XML。数据格式是自描述的。

如果您想使用不同的扩展名,可以使用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引用。

removeUnreferencedretained以及所有retain*命令行选项对应于堆行走器选项对话框中的选项。