jvm性能分析学习过程

2017-06-17  本文已影响89人  ddxueyu

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

如下图:

eclipse里操作方法

运行结果:

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里面文章对这个插件的介绍,很详细!

堆转储快照文件
上一篇下一篇

猜你喜欢

热点阅读