前提:
運行app
ddms--update heap
點擊gc,觀察heap(主要看data object的totle size)
不斷操作app
發生內存泄露(data object的totle size不斷增長,直到達到系統極限,系統不能再分配內存,app崩潰)
分析前預備:
獲取內存泄露文件
ddms中點擊工具欄dump prof file,進行泄露文件的保存
文件轉換
win+r-cmd--hprof-conv xxx-a.hprof xxx-b.hprof
MAT分析:
histogram--shallow heap排序-list objects-withincoming references--gc root,非常好定位
a.histogarm查看
b.shallow heap排序,選擇最大的那個
c.list objects-withincoming references
d.再選擇最大shallow heap的那個,gc root,找路徑鏈
e.定位結束(從底層開始shallow heap是層層遞增的,retained heap變化沒那麼大,最底層就是出問題的那層了)
MAT下載地址:
http://www.eclipse.org/mat/downloads.php