1. 程式人生 > >Eclipse Memory Analysis的安裝和使用+分析

Eclipse Memory Analysis的安裝和使用+分析

1安裝

在Eclipse help -> Eclipse Marketplace下搜尋Memory.找到圖中的軟體,預設安裝就可以。

 

2測試:

1測試程式碼

 

public class Test1 {
	public static void main(String[] args) {
		List<Demo> list = new ArrayList<>();
		while (true) {
			list.add(new Demo());
		}
	}
}

public class Demo {

}

1虛擬機器配置

引數:

  • -Xms20m -Xmx20m ##設定堆大小20m,並將最小和最大值設定相等,避免擴充套件
  • -XX:+HeapDumpOnOutOfMemoryError ##當前的記憶體堆轉儲快照,預設在專案的工作空間

 執行結果
 
 

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid73264.hprof ...
Heap dump file created [27891169 bytes in 0.102 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.fei.zhou.day1.Test1.main(Test1.java:11)

3使用Memory Analysis

1開啟Memory Analysis

 

 

2開啟dump檔案 

 

4分析

上圖中,可以看到demo建立很多

引數

  • Shallow Heap淺堆:java物件佔用的記憶體
  • Retained Heap深堆:java物件及物件引用的類佔用的記憶體 ,jvm gc回收時釋放的記憶體
  • Retained Heap深堆大於等於Shallow Heap淺堆