内存泄露分析步骤

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

--希望是生命的瑰丽朝霞,我们应当在希望中生活,并在希望中奋进,去开拓我们的人生之路。
原文地址:https://www.cnblogs.com/nulisaonian/p/5919852.html