Analyzer tool(MAT)分析JVM內存泄露案例

1、監控目的
Analyzer tool(MAT)分析JVM內存泄露案例

2、常用分析工具
Analyzer tool(MAT)分析JVM內存泄露案例

3、分析案例-MAT
MAT 介紹及分析:
啓動MAT, 然後選擇菜單項 File- Open Heap Dump 來加載需要分析的堆轉儲文件。文件加載完後,可以看到如圖 1所示的界面:
Analyzer tool(MAT)分析JVM內存泄露案例
從圖1可以看到他的大部分功能:
 Histogram 可以列出內存中的對象,對象的個數及大小
 Dominator Tree 可以列出哪個線程以及線程執行的哪些對象佔用空間
 Top consumers 通過圖形列出最大的object
 Leak Suspects 通過MA自動分析泄漏的原因。
Histogram 如圖2:
Objects:類的對象數量
Shallow size:對象本身佔用內存的大小,不包含對其他對象的引用,也就是對象頭加成員變量(不是成員變量的值)和總和。:
Retained size:是該對象自己的shallow size+ 從該對象直接或間接訪問到對象的shallow size之和。換句話說,retained size 是該對象被GC之後所能回收到內存的總和。

從圖2 可以發現,java.util.HashMap 類的對象佔用的很多的空間。
Analyzer tool(MAT)分析JVM內存泄露案例

Dominator Tree 如圖3:
從圖3 中可以發現com.csii.ibs.lc.ClusterOnlineUserRegistry 佔了很多內存空間
Analyzer tool(MAT)分析JVM內存泄露案例

Top Comsumers 如圖4:
顯示內存中最大的對象有哪些,及其對應的類是哪些,類加載器classloader是哪些。有些時候我們在這裏可以看到代碼泄漏的位置。
Analyzer tool(MAT)分析JVM內存泄露案例

4、案例一則:
今天線上業務JVM監控出現有內存泄露情況
Analyzer tool(MAT)分析JVM內存泄露案例
Analyzer tool(MAT)分析JVM內存泄露案例

選擇 Path To GC Roots ->exclude weak references,過濾
Analyzer tool(MAT)分析JVM內存泄露案例
然後就很直觀的分析出什麼導致的了,然後優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章