1.安装eclipse 内存分析工具:eclipse memory analyzer
2.eclipse memory analyzer学习了解
学会使用eclipse Memory Analyzer --MAT(推荐-很详细)
3.初次试炼
public class TestJavaHeap_1th extends TestCase{
static class OOMObject {
}
public static void main(String args[]){
List<OOMObject> list = new ArrayList<OOMObject>();
while (true) {
list.add(new OOMObject());
}
}
}
<b>eclipse里操作方法</b>
使用eclipse测试:右键当前文件-> debug as-> debug configurations->选择Arguments标签页->在VM arguments里填入 -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
如下图:
运行结果:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid91424.hprof ...
Heap dump file created [27639817 bytes in 0.172 secs]
以上操作说明:堆的最小值-Xms和最大值-Xmx设置一样,限制了堆自动扩展通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出异常时Dump出当前内存堆转储快照以便事后进行分析
分析:使用内存映像分析工具(eclipse memory analyzer)对dump出来的堆转储快照进行分析,分清楚内存中的对象是否有必要,是内存泄露(memory leak),还是内存溢出(memory overflow),不会用MAT的请参考2里面文章对这个插件的介绍,很详细!