jhat 简介
jha命令与njmap 命令搭配使用,用于分析jmap生成的heap dump文件(堆转储快照)。jhat内置了一个微型的HTTP/HTML服务器,对生成的dump文件分析后,可以在浏览器中查看分析结果。
使用jhat命令,会启动一个http服务,默认端口7000。
注:jhat命令在 JDK9、JDK10 中已经被删除,官方建议用 VisualVM 代替。
语法
1 2 3 4 5 6 7 8 9 10 11
| jhat [options] heap-dump-file
options 参数说明 * -J< flag >:因为 jhat 命令实际上会启动一个 JVM 来执行,通过 -J 可以在启动 JVM 时传入一些启动参数。例如,-J-Xmx512m 指定运行 jhat 的 JVM 使用的最大堆内存为 512 MB。 如果需要使用多个 JVM 启动参数,则传入多个 -Jxxxxxx。 * -stack false|true:关闭跟踪对象分配调用堆栈。如果分配位置信息在堆转储中不可用,则必须将此标志设置为 false。默认值为 true。 * -refs false|true:关闭对象引用跟踪。默认情况下,返回的指针是指向其他特定对象的对象,如反向链接或输入引用(referrers or incoming references),,会统计/计算堆中的所有对象。 * -port port-number:设置 jhat HTTP server 的端口号,默认值 7000。 * -exclude exclude-file:指定对象查询时需要排除的数据成员列表文件。 例如,如果文件列出了 java.lang.String.value,那么当从某个特定对象 Object o 计算可达的对象列表时,引用路径涉及 java.lang.String.value 的都会被排除。 * -baseline exclude-file:指定一个基准堆转储(baseline heap dump)。 在两个 heap dump 文件中有相同 object ID 的对象会被标记为不是新的(marked as not being new),其他对象被标记为新的(new)。在比较两个不同的堆转储时很有用。 * -debug int:设置 debug 级别,0 表示不输出调试信息。 值越大则表示输出更详细的 debug 信息。 * -version:启动后只显示版本信息就退出。
|
示例
1 2 3 4 5 6 7 8 9 10 11
| [lepeng@centos ~] Reading from /tmp/dump.dat... Dump file created Mon Sep 10 01:04:21 CST 2018 Snapshot read, resolving... Resolving 204094 objects... Chasing references, expect 40 dots........................................ Eliminating duplicate references........................................ Snapshot resolved. Started HTTP server on port 7000 Server is ready.
|
打开浏览器进行访问:http://192.168.40.133:9999/
在最后面有OQL查询功能