【Android 內存優化】使用 Memory Analyzer ( MAT ) 工具分析內存 ( hprof 文件轉換 | MAT 工具下載 | MAT 工具使用 )



內存泄漏原理 : 長生命週期對象 , 持有短生命週期對象的引用 , 並且是強引用持有 , GC 無法釋放該短生命週期對象引用 , 造成 OOM ;

Android Profiler 工具參考官方文檔 : 使用 Memory Profiler 查看 Java 堆和內存分配

本博客中開始使用 MAT 工具分析內存快照 , 首先要將內存快照文件 , 轉化成 MAT 工具能識別的文件 , 然後使用 MAT 工具進行識別 ;





一、 hprof 文件轉換



上一篇博客 【Android 內存優化】Android Profiler 工具常用功能 ( 監測內存 | 內存快照 ) 中保存了內存快照文件 memory-20200625T145636.hprof , 要使用 MAT 工具分析該內存快照 , 需要先將該文件轉換成爲 MAT 標準的文件格式 ;


使用 SDK 中的 hprof-conv.exe 工具 , 可以將上述 hprof 文件轉爲 MAT 工具可以識別的文件 , 工具所在目錄的路徑爲 Y:\001_DevelopTools\002_Android_SDK\platform-tools</font> , 將該目錄配置到環境變量中 , 即可在命令窗口使用該工具 ;



1. 配置環境變量 :

在這裏插入圖片描述



2. hprof-conv 命令格式 :


-z 命令選項 : 表示排除非 APP 內存的堆 , 如 Zygote 內存等 ;

② srcFile 參數 : -z 後第一個參數是 源文件 , 即從 Android Studio 中保存的內存快照文件 , memory-20200625T145636.hprof ;

③ dstFile 參數 : 後面的第二個參數是目標文件 , 即將轉換後的結果保存到該文件中 ;

hprof-conv -z srcFile dstFile


3. 執行如下命令 : 將 memory-20200625T145636.hprof 內存快照文件轉換爲 MAT 格式的內存文件 , 最終存儲在 mat.hprof 文件中 , 其中加入 -z 選項 , 表示排除非 APP 內存信息 ;

hprof-conv -z memory-20200625T145636.hprof mat.hprof

在這裏插入圖片描述





二、 下載 Memory Analyzer ( MAT ) 工具



Memory Analyzer ( MAT ) 內存分析工具主頁 : Memory Analyzer ( MAT ) 工具官網主頁 , 也可以在本博客中的 CSDN 資源 頁面下載 ;

在這個頁面中點擊 Download 鏈接 , 可以查看具體的各版本下載連接 ;

在這裏插入圖片描述


Memory Analyzer ( MAT ) 內存分析工具下載 : Memory Analyzer ( MAT ) 工具下載頁面 , 也可以在本博客中的 CSDN 資源 頁面下載 ;

這裏選擇 Memory Analyzer 1.10.0 Release 最新版本進行下載 ;

點擊此處直接下載

在這裏插入圖片描述

下載完畢 , 並解壓 :

在這裏插入圖片描述





三、 Memory Analyzer ( MAT ) 工具打開內存快照



打開 Memory Analyzer ( MAT ) 內存分析工具 : 找到該工具啓動文件 Y:\hprof\MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64\mat\MemoryAnalyzer.exe , 打開該工具 , 打開很慢 , 可能要等 11 分鐘 ;

在這裏插入圖片描述


打開內存快照文件 : 選中菜單欄中的 File -> Open Heap Dump , 在彈出的對話框中選擇之前轉換好的 mat.hprof 文件 ;

在這裏插入圖片描述


進入內存分析主界面 : 這個等了 2 ~ 5 分鐘 , 加載巨慢 , 如果沒有出現 , 慢慢等 , 估計性能差一點的電腦要 10 分鐘以上時間 ;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章