使用監控工具發現記憶體使用不斷增加,則有可能存在記憶體洩露,記憶體洩露可以使用jmap工具進行分析。jmap命令可以獲得執行中的jvm的堆的快照,從而可以離線分析堆,以檢查記憶體洩漏,檢查一些嚴重影響效能的大物件的建立,檢查系統中什麼物件最多,各種物件所佔記憶體的大小等等,可以使用jmap生成heap dump。
1.使用top命令檢視是哪個程序耗的記憶體比較多。通過快捷鍵 shift+m 對記憶體進行排序。
2.執行命令列印堆疊資訊 堆檔案為 aaa.hprof jmap -dump:live,format=b,file=aaa.hprof 18037
3.使用mat分析工具對步驟2列印的aaa.hprof 檔案進行分析找到占用大量記憶體的執行緒。為了找到記憶體洩露,獲取了兩個堆轉儲檔案,兩個檔案獲取時間間隔是一天(因為記憶體只是小幅度增長,短時間很難發現問題)。對比兩個檔案的物件,通過對比後的結果可以很方便定位記憶體洩露。
通過jmap分析記憶體洩漏
首先應該明確的是,jmap命令只能為記憶體洩漏提供一些線索和依據,但是不能確切的排查出 中哪一行真正的出現了問題。舉個例子 乙個池子有1000l的容量,前面的800l紅色的水一直沒有問題,這時向其中倒入了201l藍色的水,池子裡面的水溢位了,我能確切的說是這800l紅色的水的問題導致的嗎?我能確切的...
java記憶體溢位分析工具 jmap
cd usr local jdk1.6.0 37 bin jmap histo pid a.log pid tomcat程序id a.log 要生成的檔名 注意 解決系統tomcat老是記憶體撐到頭,然後崩潰的問題時,使用到了jmap 在環境是linux jdk1.5以上,這個工具是自帶的,路徑在j...
記憶體洩露分析
記憶體洩露分析demo gflags標誌設定好後,開啟cmd 鍵入要定位記憶體洩露的程式gflags.exe i memroyleak.exe 程式名稱 ust 如圖成功後,開啟memoryleak.exe程式 命令格式 umdh pn memoryleak.exe 程式名稱 f snap1.log...