高效地分析Android內存--MAT工具解析
來自: http://www.jianshu.com/p/bfb9a40a16e5
MAT(Memory Analyzer Tool), 是著名的Android內存分析工具, 雖然LeakCanary更加便捷, 但是MAT可以清楚地獲知整體內存使用情況, 還是必須要掌握的. 我來講解一下如何使用.
1. 內存文件
使用Android Studio底部的AndroidMonitor, 獲取內存片段.
點擊Initial GC回收內存, 使用應用, Dump Java Heap, 再次點擊停止.

內存泄露
在Android的SDK中的platform-tools文件夾內, hprof-conv腳本把AS的內存格式轉換為MAT的內存格式. 之后, 使用MAT打開文件.
使用命令
./hprof-conv path/file.hprof exitPath/heap-converted.hprof
2. 分析內存
下載Eclipse的MAT工具.
雖然是Eclipse的工具, 但是可以單獨運行, 并不需要安裝Eclipse.
打開內存片段, 選擇內存報告.

內存報告
內存整體情況.

內存
選擇直方圖樣式, 添加包名過濾.

引用
3. 判斷泄露
Activity或View大于1個對象, 都有可能發生內存泄露.
顯示內存的所有引用情況

引用
逐個判斷即可, 有些對象的引用較多, 可能是使用了數組, 并不一定是內存泄露.
顯示單個類的內存情況

內存
使用搜索功能, 輸入SQL語句, 并執行. 紅色嘆號執行搜索.
通過觀察, 我們發現微信mWXApi傳入了錯誤的Context, 導致內存泄露.

泄露
代碼
mFriendsPlatform = new WXSharePlatform(mActivity, title, content, bitmap, pageUrl, SendMessageToWX.Req.WXSceneTimeline);
直接傳入Activity導致內存泄露, 修改為getApplicationContext即可.
其實還比較復雜, 簡單的方法是使用LeakCanary, 參考.
OK, that's all! Enjoy it!
本文由用戶 uwwg7078 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!