Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 高效地分析Android內存--MAT工具解析

高效地分析Android內存--MAT工具解析

編輯:關於android開發

高效地分析Android內存--MAT工具解析


MAT(Memory Analyzer Tool), 是著名的Android內存分析工具, 雖然LeakCanary更加便捷, 但是MAT可以清楚地獲知整體內存使用情況, 還是必須要掌握的. 我來講解一下如何使用.


1. 內存文件

使用Android Studio底部的AndroidMonitor, 獲取內存片段.

點擊Initial GC回收內存, 使用應用, Dump Java Heap, 再次點擊停止.

AndroidMonitor

在Android的SDK中的platform-tools文件夾內, hprof-conv腳本把AS的內存格式轉換為MAT的內存格式. 之後, 使用MAT打開文件.

使用命令

./hprof-conv path/file.hprof exitPath/heap-converted.hprof

2. 分析內存

下載Eclipse的MAT工具.

雖然是Eclipse的工具, 但是可以單獨運行, 並不需要安裝Eclipse.

打開內存片段, 選擇內存報告.

內存報告

內存整體情況.

整體內存vc280fnKvSwgzO2807D8w/u5/cLLLjwvcD4NCjxwPjxpbWcgYWx0PQ=="對象引用" src="http://www.bkjia.com/uploads/allimg/160203/041252GM-3.png" title="\" />


3. 判斷洩露

Activity或View大於1個對象, 都有可能發生內存洩露.

顯示內存的所有引用情況

所有引用

逐個判斷即可, 有些對象的引用較多, 可能是使用了數組, 並不一定是內存洩露.

顯示單個類的內存情況

查詢類

使用搜索功能, 輸入SQL語句, 並執行. 紅色歎號執行搜索.

通過觀察, 我們發現微信mWXApi傳入了錯誤的Context, 導致內存洩露.

洩露狀況

代碼

        mFriendsPlatform = new WXSharePlatform(mActivity, title, content,
                bitmap, pageUrl, SendMessageToWX.Req.WXSceneTimeline);

直接傳入Activity導致內存洩露, 修改為getApplicationContext即可.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved