运行跟踪格式化程序
原文:https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_formatter.html
跟踪格式化程序是 Java™ 程序,它可将跟踪文件中的二进制跟踪点数据转换为可读格式。该格式化程序需要包含格式化模板的 TraceFormat.dat 和 J9TraceFormat.dat 文件。格式化程序生成包含有关 JVM 的头信息的文件,此 JVM 生成了二进制跟踪文件、为其生成跟踪点的线程列表和格式化的跟踪点及其时间戳记、线程标识、跟踪点标识和跟踪点数据。
要在二进制跟踪文件类型上使用跟踪格式化程序:
java com.ibm.jvm.TraceFormat <input_file> [<output_file>] [options]
其中,<input_file> 是要格式化的二进制跟踪文件的名称,<output_file> 是输出文件的名称。如果未指定输出文件,那么输出文件名为 <input_file>.fmt。
格式化跟踪所需的堆大小与跟踪文件中存在的线程数成正比。对于较多数量的线程,格式化程序可能会耗尽内存,生成错误 OutOfMemoryError。 在此情况下,请使用 -Xmx 选项增加堆大小。
可用选项
以下选项可用于跟踪格式化程序:
- -datfile=<file1.dat>[,<file2.dat>]
- 以逗号分隔的跟踪格式化数据文件的列表。缺省情况下,使用以下文件:$JAVA_HOME/lib/J9TraceFormat.dat 和 $JAVA_HOME/lib/TraceFormat.dat
- -format_time=yes|no
- 指定是否将时间戳记格式化为可人可读的格式。缺省值为 yes。
- -help
- 显示用法信息。
- -indent
- 增加每个入口跟踪点上的跟踪消息缩进,并减少每个出口跟踪点上的跟踪消息缩进。缺省为不增加消息缩进。
- -summary
- 将摘要信息打印到屏幕而不生成输出文件。
- -threads=<thread id>[,<thread id>]...
- 过滤输出以仅显示指定的线程标识。thread id 是线程标识,可指定为十进制或十六进制 (0x) 格式。可以指定任意数量的线程标识,以逗号分隔。
- -timezone=+|-HH:MM
- 指定在格式化时间戳记时要应用的 UTC 偏移量(正或负小时和分钟数)。
- -verbose
- 输出详细描述的警告和错误消息以及性能统计信息。
以下示例显示通过运行跟踪格式化程序命令产生的输出:
C: est>java com.ibm.jvm.TraceFormat sample.trc
Writing formatted trace output to file sample.trc.fmt
Processing 0.4921875Mb of binary trace data
Completed processing of 6983 tracepoints with 0 warnings and 0 errors
格式化跟踪输出类似于以下摘录(为了显示关键方面的信息而被截断):
Trace Summary
Service level:
JRE 1.8.0 Windows 7 amd64-64 build (pwa6480sr2-20150624_06(SR2))
JVM startup options:
-Xoptionsfile=c:uildpwa6480sr2-20150624sdkjreincompressedrefsoptions.default
....
Processor information:
Arch family: AMD64
Processor Sub-type: Opteron
Num Processors: 8
Word size: 64
Trace activation information::
FORMAT=c:uildpwa6480sr2-20150624sdkjrelib;.
MAXIMAL=all{level1}
EXCEPTION=j9mm{gclogger}
MAXIMAL=all{level2}
output=sample
Trace file header:
JVM start time: 08:58:35.527000000
Generations: 1
Pointer size: 8
Active threads
....
0x000000000f155f00 Attach API wait loop
0x000000000f18b200 Thread-1
0x000000000f190200 Thread-3
Trace Formatted Data
Time (UTC) Thread ID Tracepoint ID Type Tracepoint Data
08:58:35.527291919 *0x000000000f010500 j9trc.0 Event Trace engine initialized for VM = 0x3ad4d0
08:58:35.527349836 0x000000000f010500 j9prt.0 Event Trace engine initialized for module j9port
08:58:35.527354040 0x000000000f010500 j9thr.0 Event Trace engine initialized for module j9thr
08:58:35.529409621 *0x000000000f01eb00 j9trc.5 Event Thread started VMthread = 0xf01eb00, name = (unnamed thread), nativeID = 0x24a798
....
08:58:35.536134516 0x000000000f010500 j9vm.1 Entry >Create RAM class from ROM class 0x3cab680 in class loader 0x3042338
08:58:35.536136384 0x000000000f010500 j9vm.80 Event ROM class 0x3cab680 is named java/lang/Object
08:58:35.536200373 0x000000000f010500 j9vm.2 Exit <Created RAM class 0xf03ef00 from ROM class 0x3cab680