android開發使用MAT工具檢測查看內存泄露


1. 下載MAT工具 https://www.eclipse.org/mat/downloads.php
2. 右鍵打開mat.app,打開MAT工具,mac下打開可能出錯,解決方法如下:
  編輯mat.app/Contents/Eclipse下的MemoryAnalyzer.ini文件,
  在--launcher.library前添加日志輸出目錄
  -data
  /Users/xx/log
  我的修改如下:
    
3. 使用Android Studio的Profiler導出原始hprof文件
  
4. 使用android sdk自帶的platform-tools下的hprof-conv工具轉換原始hprof文件,命令如下:
  hprof-conv ./原始文件.hprof ./目標文件.hprof
5. mat工具打開目標hprof文件
  右鍵打開mat.app打開mat工具,接着點擊工作台(Workspace)下打開堆文件按鈕(Open a Heap Dump),選擇並打開目標文件。

6. 分析目標hprof文件
   
   如果對應的Objects列上大於1,可能是出現內容泄露了。接着往下看是誰引用導致的內存泄露:
    第4步:選擇並右鍵 -> List objects -> with incoming references 打開實例引用視圖。
    第5步:在實例引用視圖,繼續選擇並右鍵 -> Path To GC Roots -> with all references 即可查看所有的引用路徑。

當然現在大多時候都是使用開源項目自動檢測了,比如LeakCanary。LeakCanary這個項目分析原理也是dump並解析hprof文件。所以也是有必要學習使用MAT工具的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM