平静

遵循美德行事,纵使没有增加快乐,也可减轻焦虑。

导航

内存泄露分析步骤

Posted on 2016-09-29 14:38  mdong  阅读(288)  评论(0编辑  收藏  举报

1. dump heap:

如果Java应用程序出现了内存泄露,千万别着急着把应用杀掉,而是要保存现场。如果是互联网应用,可以把流量切到其他服务器。保存现场的目的就是为了把 运行中JVM的heap dump下来。
JDK自带的jmap工具,可以做这件事情。它的执行方法是:
jmap -dump:format=b,file=heap.bin <pid> 

 sudo  jmap  -F  -dump:format=b,file=heap.bin <pid> 

2.使用MAT查看堆内存结构:

安装完MAT后,进入MAT的Perspectives视图,通过File >   Open Heap Dump...打开heapDumps文件,就可以看到MAT给出了overview page。

打开过程中有个提示,选择默认的第一个,即,内存错误推断模式:

Shortest Paths To the Accumulation Point

根据上面提示找到占用内存最多的结构,一般是map. 

然后,根据项目源码查看逻辑及未释放的原因。

 

http://chiyx.iteye.com/blog/1528782

 

 

 

http://lc0451.iteye.com/blog/764683