Java自带的性能监测工具之jhat

本文介绍了如何使用Java自带的jhat工具分析Java堆。通过生成堆快照并利用jhat进行解析,可以查看对象数量、大小等信息,并支持OQL查询。

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

本文继续介绍Java自带的性能监测工具,本文使用jhat (Java Heap Analyse Tool)工具来玩~

jhat (Java Heap Analyse Tool) 是用来分析java堆的命令,可可以将对中的对象以html的形式展示,包括对象的数量、大小等信息,并支持对象查询语言 (OQL)。

先使用jps -l查看有哪些进程~

[root@dev03 ~]# jps -l

10838 sun.tools.jps.Jps
13823 org.apache.hadoop.hdfs.server.namenode.NameNode
13588 org.apache.hadoop.yarn.server.nodemanager.NodeManager
21983 org.apache.catalina.startup.Bootstrap
13941 org.apache.hadoop.hdfs.server.datanode.DataNode
13318 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
14097 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode

手动为PID为21983的进程生成堆快照文件~

[root@dev03 ~]# jmap -dump:format=b,file=/srv/heap.hprof 21983
Dumping heap to /srv/heap.hprof ...
Heap dump file created

然后,使用jhat打开生成的heap.hprof文件~ 如,

[root@dev03 ~]# jhat /srv/heap.hprof 
Reading from /srv/heap.hprof...
Dump file created Wed Mar 22 10:41:26 CST 2017
Snapshot read, resolving...
Resolving 526703 objects...
Chasing references, expect 105 dots.........................................................................................................
Eliminating duplicate references.........................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

jhat在分析完成后,使用HTTP服务器展示其分析结果。访问地址为http://<IP>:7000,可以看到类似如下的内容:

 

104349_yEFu_2911530.png

将页面拖到最下面,“Other Queries”一栏~

104748_n678_2911530.png

“Other Queries”一栏中点击不同的链接可以展示不同的内容,如

 

点击“Show heap histogram” 链接,展示堆快照直方图~

104848_JiZb_2911530.png

 

点击“Execute Object Query Language (OQL) query”链接,可以使用OQL查询~

 

105404_UfHX_2911530.png

OQL查询语法与Visual VM的OQL类似~ 基本语法如下:

 select <JavaScript expression to select>
         [ from [instanceof] <class name> <identifier>
         [ where <JavaScript boolean expression to filter> ] ]

可以点击此连接(oqlhelp.html)获取Visual VM OQL更多信息~

105333_31P4_2911530.png

 

如,”获取所有ClassLoader类的名字“的OQL查询如下:

 select classof(cl).name 
    from instanceof java.lang.ClassLoader cl

查询结果如下:

105740_NTST_2911530.png

 

转载于:https://my.oschina.net/wangmengjun/blog/864838

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值