jhat
作用
jhat(JVM Heap Analysis Tool)用来分析jmap生成的堆Dump。
TIPS
- 此命令是实验性的,不受支持。
- jhat功能不是很强,VisualVM、Eclipse Memory Analyzer等都比jhat强大,建议优先使用jhat的替代工具。
参考文档:
- Java 8 Unix:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jhat.html
- Java 8 Windows:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jhat.html
-
使用说明
命令格式:
jhat [options] heap-dump-file
options的可选项如下:
-stack false | true:开启或关闭跟踪对象分配调用栈,默认true
- -refs false | true:开启或关闭对对象引用的跟踪,默认true
- -port port-number:指定jhat HTTP Server的端口,默认7000
- -exclude exclude-file:指定一个文件,该文件列出了应从可达对象查询中排除的数据成员。例如,如果文件包含java.lang.String.value,则对于指定对象o,不管对象列表针对o是否可达,都不会考虑涉及java.lang.String.value的引用路径
- -baseline exclude-file:指定基线堆Dump文件。两个堆Dunmp中,具有相同对象ID的对象都会标记为不是新对象,其他对象被标记为新对象。这对于比较两个不同的堆转储很有用。
- -debug intSets:指定该工具的debug级别。设置为0,则不会有debug输出。数值越高,日志越详细。
- -version:显示版本
使用示例
```shell分析1.hprof,并开启对象分配调用栈的分析
jhat -stack true 1.hprof
分析1.hprof,开启对象分配调用栈的分析,关闭对象引用的分析
jhat -stack true -refs false 1.hprof ``` 等待片刻之后,访问 http://localhost:7000/ 即可查看分析结果。