1. 程式人生 > >java關於記憶體溢位的分析,mat工具

java關於記憶體溢位的分析,mat工具

對於我們在現實的場景中,或多或少會遇到記憶體溢位的問題,可怎麼排查這個問題呢?

首先我們需要了解一下關於java中自身安裝自帶的幾個命令:jmap,Jvisualvm,jstack等。一般情況下,對於記憶體,cpu,執行緒的監控用Jvisualvm

這個命令我們很清晰的能檢視系統的執行情況。

如果我們需要定位記憶體溢位的程式碼,就必須用jmap匯出此時的對檔案,用MAT工具進行檢視。我看了很多的部落格說eclipse如何整合MAT。

其實,eclipse不用整合MAT,我們去MAT官網下載:點選開啟連結下載解壓,直接點選裡面的MemoryAnalyzer.exe就可以了,新增我們dump的堆檔案就可以解析了。對於對檔案的dump,我們用jmap命令: 

jmap -dump:format=b,file=C:/dump/dump.bin 7098

//注意這個7089就是我們執行的系統的pid,可以通過jsp進行檢視

然後用MemoryAnalyzer開啟:


紅色部分,就是我們要重點看的,通過第二個圈,可以看出記憶體都累計在陣列中,接下來我們看Details:


就可以發現是一個集合中在不停的放User物件。