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
  • Java 11:已废弃

    使用说明

    命令格式:

    1. 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/ 即可查看分析结果。