记录一次unreachable object内存暴涨分析

同事让帮忙分析一个程序问题,程序运行后内存一直在涨。

先使用jmap命令抓取进程的内存信息

jmap -dump:live,format=b,file=dump.hprof 进程号

使用eclipse的merroy analysis 插件打开4个G的dump文件,发现内存使用并不是很大,但是注意到上面有unreachable objects histogram是未统计在内的。

点击设置Merroy Analyzer,勾选上keep unreachable objects,重新打开dump文件进行分析,发现有3G未gc内存占用。

查看histogram,按照heap排序,忽略char[]和string,排第三位的为StackTraceElement

 选择Merge Shortest Paths to GC Roots,查看具体内容

根据显示的内容定位到代码及行号,最后发现是一个只需要初始化一次的对象反复进行了初始化操作导致的。

修改代码为初始化一次,问题解决。

以前虽然分析过不少内存问题,但是unreachable objects的内存问题还是第一次遇到,中间切换了不少内存分析工具进行分析,经历了一些波折,就此记录一下。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值