java heapdump 分析工具,九、jdk工具之jhat命令(Java Heap Analyse Tool 虚拟机堆转储快照分析工具)、...

九、jdk工具之jhat命令(Java Heap Analyse Tool 虚拟机堆转储快照分析工具)、

目录

一、jdk工具之jps(JVM Process Status Tools)命令使用

二、jdk命令之javah命令(C Header and Stub File Generator)

三、jdk工具之jstack(Java Stack Trace)

四、jdk工具之jstat命令(Java Virtual Machine Statistics Monitoring Tool)

四、jdk工具之jstat命令2(Java Virtual Machine Statistics Monitoring Tool)详解

五、jdk工具之jmap(java memory map)、 mat之四–结合mat对内存泄露的分析

六、jdk工具之jinfo命令(Java Configuration Info)

七、jdk工具之jconsole命令(Java Monitoring and Management Console)

八、jdk工具之JvisualVM、JvisualVM之二–Java程序性能分析工具Java VisualVM

九、jdk工具之jhat命令(Java Heap Analyse Tool)

十、jdk工具之Jdb命令(The Java Debugger)

十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)

十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)

十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)

十三、jdk命令之Java内存之本地内存分析神器:NMT 和 pmap

Java Virtual Machine Heap Analysis Tool 虚拟机堆转储快照分析工具,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果,可以查找诸如内存方面的问题。

不过jhat和MAT比较起来,就没有MAT那么直观了,MAT是以图形界面的方式展现结果

一、hat命令 — Java Head Analyse Tool介绍

用途:是用来分析Java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。

jhat -help

参数

-J< flag >

因为 jhat 命令实际上会启动一个JVM来执行, 通过 -J 可以在启动JVM时传入一些启动参数. 例如, -J-Xmx512m 则指定运行 jhat 的Java虚拟机使用的最大堆内存为 512 MB. 如果需要使用多个JVM启动参数,则传入多个 -Jxxxxxx.

-stack false|true

关闭对象分配调用栈跟踪(tracking object allocation call stack)。 如果分配位置信息在堆转储中不可用. 则必须将此标志设置为 false. 默认值为 true.-refs false|true

关闭对象引用跟踪(tracking of references to objects)。 默认值为 true. 默认情况下, 返回的指针是指向其他特定对象的对象,如反向链接或输入引用(referrers or incoming references), 会统计/计算堆中的所有对象。-port port-number

设置 jhat HTTP server 的端口号. 默认值 7000。

-exclude exclude-file

指定对象查询时需要排除的数据成员列表文件(a file that lists data members that should be excluded from the reachable objects query)。 例如, 如果文件列列出了 java.lang.String.value , 那么当从某个特定对象 Object o 计算可达的对象列表时, 引用路径涉及 java.lang.String.value 的都会被排除。-baseline exclude-file

指定一个基准堆转储(baseline heap dump)。 在两个 heap dumps 中有相同 object ID 的对象会被标记为不是新的(marked as not being new). 其他对象被标记为新的(new). 在比较两个不同的堆转储时很有用。-debug int

设置 debug 级别. 0 表示不输出调试信息。 值越大则表示输出更详细的 debug 信息。-version

启动后只显示版本信息就退出。

二、jhat中重点内容关注

查看jhat展示的网页信息中,一般查看堆异常情况主要看这个两个部分:Show instance counts for all classes (excluding platform),平台外的所有对象信息。Show heap histogram 以树状图形式展示堆情况。

这两部分内容在首页的http://ip:7000页面的最下面中的Other Queries里的两个链接中进入。

20200621040513-5eeedc798f5c8.png

三、示例

第一步:导出堆

[appdeploy@cnsz22vl2175 appTest]$ jmap -dump:live,file=b.bin 81301Dumping heap to/home/appdeploy/appTest/b.bin ...

Heap dump file created

[appdeploy@cnsz22vl2175 appTest]$

第二步:分析堆文件

[appdeploy@cnsz22vl2175 appTest]$ jhat test.bin

20200621040515-5eeedc7bde014.png

第三步:查看html

平台外的所有对象信息

20200621040517-5eeedc7da9772.png

有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:

jhat -J-Xmx512m

对于jhat启动后显示的html页面中功能:

(1)显示出堆中所包含的所有的类

e5gcjzpnrbz8686.gif

(2)从根集能引用到的对象

laqja5qy0bj8687.gif

(3)显示平台包括的所有类的实例数量

jgvaigtedfl8688.gif

(4)显示平台外的所有对象信息

20200621040520-5eeedc803fc60.png

(5)堆实例的分布表(堆直方图)

3vl4l5q3ks08690.gif

(6)执行对象查询语句

m0amjetdjta8691.gif 

更多关于对象查询语言的信息,见这篇文章:

http://blog.csdn.NET/gtuu0123/archive/2010/11/27/6039592.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值