在Eclipse中安裝和使用MAT步驟
Eclipse安裝Allocation tracker插件
MAT是壹個Eclipse插件,同時也有單獨的RCP客戶端。
如果安裝Eclipse插件(更方便使用,本文介紹的是使用Eclipse插件)。使用ing references,它會生成壹個heap上的所有該對象數組的列表,我們可以按照Shallow Heap的使用情況來排序。
選擇壹個較大的對象,右擊,選擇Path to GCRoot->exclude weak/soft reference。
被JVM持有的對象,如當前運行的線程對象,被systemclass loader加載的對象稱為GC Roots。從壹個對象到GC Roots的引用鏈被稱為Path to GC Roots,
通過分析Path to GC Root可以找出Java的內存泄露問題,當程序不在訪問該對象時,仍然存在到該對象的引用路徑。
MAT不會明確的告訴我們這就是內存泄露,因為它也不知道這個東西是不是程序需要的,只有程序員知道。
點擊Domanitor_tree按鈕,彈出新的窗口,列出了對中最大的對象,第二層級節點標識當被第壹層級的節點所引用到的對象,當第壹層級的節點被回收時,這些對象也將會回收。
這個工具可以幫我們定位對象間的引用情況,垃圾回收時候的引用關系。