java jmap mat_问题排查-jmap和MAT工具

jmap常用命令

1、heap

命令:jmap -heap pid

描述:显示Java堆详细信息

69c5b7c35213a32c7e80d16dfa27e657.png

a7fdc9f11018ab08d29b25f872328c63.png

2、histo[:live]

命令:jmap -histo:live pid

描述:显示堆中对象的统计信息

766f67c0619663ba2de37e4d2e9056e9.png

3、dump:

命令:jmap -dump:format=b,file=heapdump.phrof pid

描述:生成堆转储快照dump文件。

以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。

f46c4af418f8fc34c0728ab814c78bb0.png

利用MAT分析dump文件

打开dump如图:

dc012368b9acb8e7938560dde43a8e58.png

重要功能

1、Histogram

Histogram,可列出每一个类的实例数,支持正则表达式查找,也可以计算出该类所有对象的retained size。

4018eecf70ec780aeef9af9427aaac87.png

Shallow Heap就是对象本身占用内存的大小,不包含其引用的对象内存,实际分析中作用不大。

Retained Heap值的计算方式是将RSet(当该对象被回收时那些将被GC回收的对象集合)中的所有对象大小叠加。或者说,因为X被释放,导致其它所有被释放对象(包括被递归释放的)所占的heap大小。

1、选择一个Class,右键选择List objects > with incoming references,在新页面会显示通过这个class创建的对象信息。

2、然后再选择一个对象,右键选择Path to GC Roots > ****,通常在排查内存泄漏的时候,我们会选择exclude all phantom/weak/soft etc.references,意思是查看排除虚引用/弱引用/软引用等的引用链,也就是强引用链。

2、Leak Suspects

1935f276b72feb029f0277f78dde0c0b.png

Leak Suspects 界面提示可能存在内存的泄露。

比方说大对象:

b2ff987969702b2e4bc4c39babb85842.png

通过Details可以查看具体问题的详情!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值