高效地分析Android記憶體--MAT工具解析

來源:互聯網
上載者:User

高效地分析Android記憶體--MAT工具解析

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.

開啟記憶體片段, 選擇記憶體報告.

記憶體整體情況.

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即可.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.