工具
使用
導入LeakCanary
在項目的gradle文件導入LeakCanary,具體操作見leakcanary
當項目出現內存泄漏,通過LeakCanary定位具體的Activity或Fragment。
AS(v3.1.2)獲取heap dump文件 .hprof
一、選擇Android Profiler,選擇MEMORY。
二、先強制GC多次,然後獲取heap dump信息
三、生成heap dump 信息文件 a.hprof
四、特別注意,capture出來的 a.hprof 並不能直接交由Ecliplse MAT 處理。需要AndroidSDK提供的hprof-conv工具轉碼一次:
hprof-conv a.hprof b.hprof
MAT分析內存泄漏原因
一、導入轉換後的 b.hprof,選擇默認項,效果如下:
二、獲取數據類名
三、篩選LeakCanary定位的Activity/Fragment
四、選中 查看引用詳情
五、具體情況具體分析
這裏隨便找的個並沒有內存泄漏的例子,具體情況酌情處理
這裏涉及到java的GC,以及四種引用類型,之後再做分析