Jmap+MAT 排查内存泄漏

最近在项目中自测的时候(压力测试)遇到内存泄漏的情况,想查看具体是哪个模块甚至哪个类引起的问题,经同事推荐使用Jmap+MAT的组合进行了一次尝试,下面记录一下,以便今后深入学习使用。

在程序出现内存溢出情况之前,想要观察内存使用情况的话,可以借助atop命令查看内存的使用情况。

这里可以用一个linux下的命令(jps:虚拟机进程状况工具)查看所有Java相关线程的pid等信息

然后使用jmap(Java内存映像工具)命令,jmap是一个可以输出内存中所有对象的工具,甚至可以将VM中的heap,以二进制输出成文本。jmap-dump:format=b,file=heap.bin 8120可以将8120进程的内存heap输出到heap.bin文件里。它可以打印出某个Java进程(使用pid)内存中所有“对象”的情况(如:产生哪些对象,及其数量)。

再借助MAT(将heap.bin导入到MAT中)生成内存消耗的详细信息。

MAT安装与介绍
下载地址:http://www.eclipse.org/mat/downloads.php。
通过MAT打开dump出来的内存文件,打开后如下图:




从上图可以看到它的大部分功能。
1. Histogram可以列出内存中的对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值