Eclipse Memory Analysis的安裝和使用+分析
阿新 • • 發佈:2018-11-19
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淺堆