Eclipse-Memory Analyzer

2315 ワード

概要
Eclipse公式プラグインのアドレス:http://www.eclipse.org/mat/downloads.php ウェブサイト上のこのサイトを使ってオンラインでインストールします。http://download.eclipse.org/mat/1.5/update-site/
インスタンスを使う
用語の約束
mat :   Memory Analyzer Tool
OOM : OutOfMemoryError
1.jvmパラメータを準備する
  • まずメモリdumpが大きすぎるのを防ぐためにheapのサイズを制限する必要があります。heapが2 Gであればdumpから出てくるhprofファイルも2 G~
    -Xms20m heap  20
    -Xmx20m heap  20
    
  • があります。
  • その後、パラメータを設定し続けると、仮想マシンがheappOOMを発生した時にメモリをスナップダウンします。hprofはその拡張子の名前である。
    -XX:+HeapDumpOnOutOfMemoryError
    
  • 2.操作
  • セグメントCG Rootsがオブジェクトに到達することを保証するコード
    static class OOMObject{}
    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<OOMObject>();
        while (true) {
            list.add(new OOMObject());
        }
    }
  • プログラムの実行が完了したら、consone出力
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid8464.hprof ...
    Heap dump file created [27967716 bytes in 0.096 secs]
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2245)
        at java.util.Arrays.copyOf(Arrays.java:2219)
        at java.util.ArrayList.grow(ArrayList.java:242)
        at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
        at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
        at java.util.ArrayList.add(ArrayList.java:440)
        at com.ddup.jvm.HeapMemoryLeak.main(HeapMemoryLeak.java:15)
  • が出力されます。
  • Eclipseにおけるmat動作
    1.   Memory Analysis  。
    2.      Open Heap Dump,             java_pid****.hprof  
    
  • 3.分析
           ...