您的位置:首页 > 其它

内存泄露问题排查

2016-06-27 00:00 267 查看
摘要: 内存对象不释放导致垃圾回收频繁,垃圾回收线程cpu占用很高。

1. 发现cpu持续占用高,定位占用cpu比较多的进程



2. 进一步定位进程里面具体哪些线程占用高top -Hp 873



3. 上面线程pid转成16进制,jstack 873找到对应的线程,发现是垃圾回收线程



4. 看看为什么垃圾回收这么频繁,jstat -gcutil 873 1000



2. 发现内存增长非常快,年老代很快就满了,频繁的执行full gc,所以猜测是年轻代中长时间有对象不释放,直接把内存dump下来用MemoryAnalyzer分析一下 jmap -dump:format=b,file=dump1.hprof 873

用MemoryAnalyzer分析找到对应的占用内存比较多的对象



点击Details后:



找到了占用最大的对象, 根据上面的定位分析对应的代码逻辑,看为什么这个对象没有被释放。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm 内存泄露