用于处理快照的命令行可执行文件
当使用离线分析以编程方式保存快照时,可能还需要以编程方式从这些快照中提取数据或报告。 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引用。
removeUnreferenced
、retained
以及所有retain*
命令行选项对应于堆行走器选项对话框中的选项。