1.安裝eclipse 內(nèi)存分析工具: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
如下圖:
運行結(jié)果:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid91424.hprof ...
Heap dump file created [27639817 bytes in 0.172 secs]
以上操作說明:堆的最小值-Xms和最大值-Xmx設置一樣呀页,限制了堆自動擴展通過參數(shù)-XX:+HeapDumpOnOutOfMemoryError可以讓虛擬機在出現(xiàn)內(nèi)存溢出異常時Dump出當前內(nèi)存堆轉(zhuǎn)儲快照以便事后進行分析
分析:使用內(nèi)存映像分析工具(eclipse memory analyzer)對dump出來的堆轉(zhuǎn)儲快照進行分析距境,分清楚內(nèi)存中的對象是否有必要,是內(nèi)存泄露(memory leak)沙咏,還是內(nèi)存溢出(memory overflow)币旧,不會用MAT的請參考2里面文章對這個插件的介紹践险,很詳細!