jhat简介
jhat(JVM Heap Analysis Tool)是JDK自带的转储快照分析工具。
使用方法
命令格式: jhat [options] heap-dump-file(待分析完成后访问localhost:7000)
options:
options | 作用 |
---|---|
-stack <bool> | 关闭跟踪对象分配调用堆栈。如果堆转储中没有分配站点信息,则必须将此标志设置为false。默认值为true。 |
-refs <bool> | 关闭对对象引用的跟踪。默认值为true。默认情况下,将为堆中的所有对象计算后向指针,即指向指定对象的对象,例如引用程序或传入引用。 |
-port number | 设置jhat Http Server端口号 |
-exclude exclude-file | 指定一个文件,该文件列出了应从可达对象查询中排除的数据成员。例如,如果文件列出java.lang.String.value,则无论何时计算从特定对象可访问的对象列表,java.lang.String.value都不会考虑涉及字段的引用路径。 |
-baseline exclude-file | 指定基准堆转储。两个堆转储中具有相同对象ID的对象都标记为不是新对象。其他对象被标记为新对象。这对于比较两个不同的堆转储很有用。 |
-debug <int> | 设置debug级别 |
使用示例
- jhat dump-file分析堆转储文件
david@UX501:~$ jhat /home/david/Desktop/dump.dp
Reading from /home/david/Desktop/dump.dp...
Dump file created Sun Jul 26 11:01:36 GMT+08:00 2020
Snapshot read, resolving...
Resolving 226226 objects...
Chasing references, expect 45 dots.............................................
Eliminating duplicate references.............................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
-
打开浏览器查看分析结果
-
查看每个类的实例数
-
查看占用空间比较多的对象
-
执行OQL(Object Query Language 具体语法将单独进行介绍)
小结
jhat可以完成基本的堆转储文件分析,但由于堆转储文件分析比较耗费资源,一般会将其拷贝到其它计算机上进行分析,实际就没有必要用jhat这类命令行工具。所以条件允许的情况下,不建议使用。
参考资料
未经授权,禁止转载