JVM调优小工具之jhat

jhat是JVM的堆分析工具,用于分析heap-dump-file。通过命令行启动后,可以在浏览器中查看分析结果,包括类实例数、占用空间的对象等信息。虽然由于资源消耗大,通常不在本地使用,但了解其使用方法对JVM调优有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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级别
使用示例
  1. 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.
  1. 打开浏览器查看分析结果
    在这里插入图片描述

  2. 查看每个类的实例数
    在这里插入图片描述

  3. 查看占用空间比较多的对象
    在这里插入图片描述

  4. 执行OQL(Object Query Language 具体语法将单独进行介绍)
    在这里插入图片描述

小结

jhat可以完成基本的堆转储文件分析,但由于堆转储文件分析比较耗费资源,一般会将其拷贝到其它计算机上进行分析,实际就没有必要用jhat这类命令行工具。所以条件允许的情况下,不建议使用。

参考资料

Oracle官方文档

未经授权,禁止转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值