您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么使用MAT進行JVM內存分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
公司小程序商城項目,服務器為阿里云。
前段時間總是出現服務器CPU報警現象(設置的閾值為95%,CPU使用率大于95%會自動報警)。
通過占用命令查看,迅速鎖定當前運行的java進程。
Eclipse Memory Analyzer是一個快速且功能豐富的Java堆分析器,可幫助您查找內存泄漏并減少內存消耗。
使用Memory Analyzer分析具有數億個對象的高效堆轉儲,快速計算對象的保留大小,查看誰阻止垃圾收集器收集對象,運行報告以自動提取泄漏嫌疑者。
首先了解下Heap Dump,它也叫堆轉儲文件,是java進程在某個時間內的快照。
它在觸發快照的時候保存了很多信息:java對象和類信息。
通常在寫Heap Dump文件前會觸發一次Full GC。
通過OOM獲取,即在OutOfMemoryError后獲取一份HPROF二進制Heap Dump文件,可以在jvm里添加參數:
通過OOM獲取,即在OutOfMemoryError后獲取一份HPROF二進制Heap Dump文件,可以在jvm里添加參數:
-XX:+HeapDumpOnOutOfMemoryError
主動獲取,即在虛擬機添加參數如下,然后在Ctrl+Break組合鍵即可獲取一份Heap Dump
-XX:+HeapDumpOnCtrlBreak
使用HPROF agent
使用Agent可以在程序執行結束時或受到SIGOUT信號時生成Dump文件。配置在虛擬機的參數如下:
-agentlib:hprof=heap=dump,format=b
jmap 可以在cmd里執行,命令如下:
jmap -dump:format=b file=<文件名XX.hprof>
使用JConsole
首先獲取dump,jmap -dump:format=b file=<文件名XX.hprof>
使用MAT工具進行日志解析,根據日志的大小不同,解析時間不同。File>Open Heap Dump。
日志分析。可以看出,存在兩個較大的問題,每個大約占用1G的空間
查看Problem Suspect 1的詳細信息、線程的樹結構以及線程對象匯總,發現Member對象有近52萬個存活對象
分析線程棧信息,定位問題發生位置,并進行方法優化
“怎么使用MAT進行JVM內存分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。