MAT內存分析工具的使用


一、概述

Memory AnalyzerTool是一個快速且功能豐富的Java堆分析器,可幫助您查找內存泄漏並減少內存消耗。使用Memory Analyzer分析具有數億個對象的高效堆轉儲,快速計算對象的保留大小,查看誰阻止垃圾收集器收集對象,運行報告以自動提取泄漏嫌疑者。

二、工具使用

1)heap dump文件介紹

Heap Dump,它也叫堆轉儲文件,是java進程在某個時間內的快照。它在觸發快照的時候保存了很多信息:java對象和類信息。通常在寫Heap Dump文件前會觸發一次Full GC。

 

2)獲取heapdump文件

通過jvisualVM工具中的jmx連接,在項目運行之前和運行之后,分別右擊生成堆dump文件*. hprof文件,並將其下載到本地;用於mat分析;

 

3)mat內存分析工具使用

l  打開heapdump文件

通過菜單【file ---open heapdump】打開heapdump文件,並生成多個分析結果文件;

 

l  Overview頁簽

展示進程當前內存的使用情況信息

 

 

 

l  Histogram

點擊overview頁簽下方的histogram,可打開histogram頁簽,展示內存中的對象,對象的個數及大小;

Class Name : 類名稱,java類名

Objects : 類的對象的數量,這個對象被創建了多少個

Shallow Heap :一個對象內存的消耗大小,不包含對其他對象的引用

Retained Heap :是shallow Heap的總和,也就是該對象被GC之后所能回收到內存的總和;

 

選擇其中某個對象,右擊打開菜單選擇 list objects ->with incoming refs 將列出該類的實例:

 

 

        

快速找出某個實例沒被釋放的原因,可以右健 Path to GC Roots–>exclue all phantom/weak/soft etc. reference;

 

 

l  Leak Suspects

點擊【overview】頁簽下方的leaksuspects,打開leaksuspects頁簽,自動分析內存內存泄漏的原因,可以直接定位到Class和行數;

 

 

 

 

l  Dominator Tree

點擊【OverView】頁簽下方的Domainator,可打開domainator頁簽;列出線程的樹結構,及線程下面對象占用內存的空間。

 

 

  

 

l  Top Comsumers

點擊【OverView】頁簽下方的TopComsumers,打開TopComsumers頁簽;通過圖形列出內存使用最大的對象;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM