eclipse內存分析工具MAT使用

eclipse內存分析工具MAT使用

  MAT(Memory Analyzer Tool) 是基於heap dumps來進行分析的,所以首先必須通過一定的手段得到JAVA堆的DUMP文件。JDK自帶的。JConsole 或者 JMAP都是不錯的工具。 

  準備 

  (·)下載eclipse3.7;

  (·)安裝MAT插件:http://download.eclipse.org/mat/1.1/update-site/ ;

  linux查看heap命令:jmap -heap pid;

  linux導出heap dump命令:jmap -dump:format=b,file=文件位置 pid。

  例如:tomcat的進程好爲10301,導出heap到/web/tomcat.heap的命令:jmap -dump:format=b,file=/web/tomcat.heap 10301。

  安裝完MAT後,進入MAT的Perspectives視圖,通過File >   Open Heap Dump...打開heapDumps文件,就可以看到MAT給出了overview page 

  在底部的Actions有 :

  (1)histogram 

  列出了有每個種有多少實例,每種類型的實例集合的 shallow size 和  retained size . shallow size指的是對象所消耗的內存大小,如每個對象引起消耗4個字節,或者8個字節,取決於你的操作系統(32位,還是64位), retained size的概念依賴於Retained set 的概念,Retained set 指的是當對象X被回收時,所有被垃圾回收器移除的對象集合, 

  Retained size 即是Retained set所保持的內存大小。 

  當然histogram 不僅可以通過類進行數據組織,還可以通過class loader, packages or superclass .來進行數據的組織。 

 

  (2)The Dominator Tree

  列出了堆中最大的對象,第二層級的節點表示當被第一層級的節點所引用到的對象,當第一層級對象被回收時,這些對象也將被回收。這個工具可以幫助我們定位對象間的引用情況,垃圾回收時候的引用依賴關係。 

  

  (3)Path to GC Roots

  被JVM持有的對象,如當前運行的線程對象,被systemclass loader加載的對象被稱爲GC Roots, 從一個對象到GC Roots的引用鏈被稱爲Path to GC Roots, 通過分析Path to GC Roots可以找出JAVA的內存泄露問題,當程序不在訪問該對象時仍存在到該對象的引用路徑。 

  其他參考資料:

  使用Memory Analyzer tool(MAT)分析內存泄漏(一)

  使用Memory Analyzer tool(MAT)分析內存泄漏(二)

  Memory Analyzer Wiki

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