通常,使用eclipse的mat圖形化工具開啟dump的時候都會記憶體溢位.
對於比較小的dump,eclipse可以開啟,但一旦dump檔案太大,eclipse就有點束手無策。
這時候怎麼辦呢?可以使用linux下的mat,既memory analyzer tools
手工直接導,pid為程序號
jmap -dump:live,format=b,file=m.hprof pid
在linux伺服器執行命令 uname –m檢視版本
memoryanalyzer.ini 配置檔案可以修改最大的記憶體,預設1g基本夠用了。
執行命令
./parseheapdump.sh m.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components。
如:
1)使用瀏覽器
解壓縮以.zip結尾的檔案,解壓後
使用瀏覽器開啟index.html檔案內容,檢視分析報告
檢視class histogram一項
發現其中乙個類物件占用了7個g,這裡的heap單位都是byte,自行換算。
shallow heap 既物件本身的大小
retained heap 物件自身加起直接或間接引用的大小
2)使用eclipse的mat工具
如果直接開啟dump檔案還是會記憶體溢位,所以可以使用eclipse開啟分析報告即可。
使用eclipse-file-open file開啟dump檔案,如下:
會提示錯誤,點選ok忽略錯誤,然後選擇第三項,重新開啟之前的執行報告
點選next,出現如下介面
選擇其中的乙份報告開啟,如m_system_overview.zip
得到相同的結果
獲取JVM的dump檔案
獲取jvm的dump檔案的兩種方式 1.jvm啟動時增加兩個引數 出現 oome 時生成堆 dump xx heapdumponoutofmemoryerror xx heapdumppath home liuke jvmlogs 2.發現程式異常前通過執行指令,直接生成當前jvm的dmp檔案,62...
獲取JVM的dump檔案
獲取jvm的dump檔案的兩種方式 1.jvm啟動時增加兩個引數 出現 oome 時生成堆 dump xx heapdumponoutofmemoryerror xx heapdumppath home liuke jvmlogs 2.發現程式異常前通過執行指令,直接生成當前jvm的dmp檔案,62...
如何獲取JVM的dump檔案
如何獲取jvm的dump檔案 獲取jvm的dump檔案的兩種方式 jvm啟動時增加兩個引數 發現程式異常前通過執行指令,直接生成當前jvm的dmp檔案,6214是指jvm的程序號 jmap dump format b,file servicedump.dat 6214 由於第一種方式是一種事後方式,...