jvm內存快照dump文件太大,怎麼分析

 來自凌幽草  php

一、場景

一般,使用eclipse的mat圖形化工具打開dump的時候都會內存溢出.html

 

 

對於比較小的dump,eclipse能夠打開,但一旦dump文件太大,eclipse就有點一籌莫展。linux

這時候怎麼辦呢?可使用linux下的mat,既Memory Analyzer Toolswindows

 

二、dump生成

dump能夠是內存溢出時讓其自動生成,或者手工直接導。配置jvm參數-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprofapi

 

手工直接導,PID爲進程號瀏覽器

jmap -dump:live,format=b,file=m.hprof PID服務器

 

 

三、準備工做,下載LINUX的MAT

地址:http://www.eclipse.org/mat/downloads.phpapp

 

在linux服務器執行命令 uname –m查看版本eclipse

 

 

下載對應的版本jvm

 

 

下載後將包傳到linux服務器上解壓。

 

 

MemoryAnalyzer.ini 配置文件能夠修改最大的內存,默認1G基本夠用了。

 

 

四、在linux執行分析命令

執行命令

./ParseHeapDump.sh m.hprof  org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components。

m.hprof就是jvm的dump文件,在mat目錄下會生成3份.zip結尾的報告和一些m.相關的文件,將生成的m.hprof相關的文件都下載到windows本地磁盤。

如:

 

 

五、打開分析報告

1)使用瀏覽器

解壓縮以.zip結尾的文件,解壓後

 

 

使用瀏覽器打開index.html文件內容,查看分析報告

 

 

 

查看Class Histogram一項

 

 

發現其中一個類對象佔用了7個G,這裏的Heap單位都是Byte,自行換算。

Shallow Heap 既對象自己的大小

Retained Heap 對象自身加起直接或間接引用的大小

 

        

2)使用eclipse的mat工具

 

Eclipse須要按照mat工具,安裝步驟能夠百度,或者參考

https://jingyan.baidu.com/article/cb5d61053562ed005c2fe022.html

 

若是直接打開dump文件仍是會內存溢出,因此可使用eclipse打開分析報告便可。

 

使用eclipse-File-Open File打開dump文件,以下:

 

 

 

會提示錯誤,點擊OK忽略錯誤,而後選擇第三項,從新打開以前的運行報告

 

 

點擊Next,出現以下界面

 

 

選擇其中的一份報告打開,如m_System_Overview.zip

 

 

 

獲得相同的結果

 

相關文章
相關標籤/搜索