用于处理快照的命令行可执行文件
当使用离线分析以编程方式保存快照时, 可能还需要从这些快照中以编程方式提取数据或报告。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 适当的时候,为主要内容导出位图(bitmap)图片而不是SVG。默认值是false。 可用的视图名称和选项: * 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=<完全限定类名> 指定应为其计算分配数据的类。如果为空,则显示所有类的分配。不能与package选项一起使用。 -package=<完全限定包名> 指定应为其计算分配数据的包。如果为空,将显示所有包的分配。不能与class选项一起使用。 -liveness=live|gc|all * AllocationHotSpots 选项: -format=html|csv|xml -viewfilters=<以逗号分隔的列表> -viewfiltermode=startswith|endswith|contains|equals -viewfilteroptions=casesensitive -aggregation=method|class|package|component -class=<完全限定类名> -package=<完全限定包名> -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=<方法名> 应该为其导出复杂度图的方法名称。 如果未给出,则将导出第一个方法。 否则,将导出以给定文本开头的第一个方法。 -width=<像素值> -height=<像素值> * ThreadHistory 和TelemetryHeap类似, 但选项有所变化: -format=html * MonitorUsageStatistics 选项: -format=html|csv -type=monitors|threads|classes 选择应为其计算Monitor统计信息的实体。默认值为“monitors”。 * 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=<数值> 设置包含跟踪元素的下拉列表的从零开始的索引。默认值是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导出的字段分隔符。默认为','。 -bitmap=false|true 在适当的时候,为主要内容导出一个位图(bitmap)图片而不是SVG,默认值是false。 -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”。
自动输出格式
大多数视图和比较支持多种输出格式。默认情况下,输出格式是由输出文件的扩展名推断出来的:
.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*
命令行选项都对应于堆遍历器选项对话框中的选项。