網上文檔不少,但最初都有問題。整理一份,做爲備份。使用過程:開發代碼寫完後,對可能出現內存溢出的代碼,添加配置文件,生成.hprof文件,用memory Analyzer分析排查問題,且泄漏內存大小可配置。具體安裝測試一條龍以下:eclipse
1.安裝:測試
help-》install new software -》work with : 這裏填寫eclipse版本: Kepler - http://download.eclipse.org/releases/kepler(注意這裏不一樣版本可能地址不一樣!!!)--》General Purpose Tools--》找到」Memory Analyzer「和」Memory Analyzer(Charts)「,並選取。安裝完後重啓eclipse.spa
2.提早修改配置:注意:因爲後續分析過程須要大量內存,因此,後面打開分析後的文件時,可能會報內存溢出,須要調整eclipse內存,注意:網上不少都是騙人的,必須到eclipse目錄下找到eclipse.ini在最後:-Xms2048m -Xmx2048m 這樣既可,想動態看見eclipse運行內存:線程
3.編寫內存泄漏測試代碼code
大體是往ArrayList中循環添加大量字符串。這對20M的內存設置來講確定是會溢出的。blog
1 @Test 2 public void testOutOfMemory(){ 3 List<String> list = new ArrayList<String>(); 4 for(int i=0;i<10000000;i++){ 5 String str = new String(); 6 list.add(str); 7 } 8 }
4.運行參數配置:Run as-->Run Configurations-->Arguments-->VM arguments:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,配置20M當作內存溢出上限,方便測試,具體大小你們能夠本身控制。-XX:+HeapDumpOnOutOfMemoryError 配置後,當存溢出就會生成文件。以下圖:,測試代碼運行後,控制檯輸出,見下圖:
.ip
5.代碼運行後,eclipse下刷新工程可見,生成了hprof文件,雙擊打開(注意,此處就是第二步設置參數的緣由)。默認選擇第一項,finish便可。
,具體分析:
,上圖可見,是主線程的ArrayList內存溢出了。內存