【Android端 APP 內存分析】使用工具進行APP的內存分析


Android端可以通過adb 命令直接獲取內存信息,當然Android studio也提供了對內存的監控分析工具,並且后續可以結合MAT做分析

今天介紹的是通過Android studio和MAT工具進行分析的方法:

1、通過Android studio打包之后,app安裝成功

2、點擊 Android Monitor,具體見下圖:

 

運行APP成功之后,就能看到下圖中所示,說明APP的進程已經啟動起來了,然后就可以進行操作和觀察數據了

 

看到Android Monitor里面能夠監控的數據有:CPU、內存、網絡、以及GPU

 

3、查看內存這一欄:

 

看到以5s為間隔,曲線圖會一直變化,其中深藍色代表已經分配的,淺藍色代表free的

進行多次反復操作,例如進入APP之后再正常退出,觀察內存數據,如果內存一直在增長,就可以初步判定可能有問題

點擊下方的這個卡車,強制gc,之后點擊卡車后面的第一個圖標,將鼠標放上去之后,能夠看到 dump java heap的tips,

 

之后會生成一個hprof的文件,見下圖:

 

然后可以點擊 Analyzer Tasks就可以將Analyzer Tasks的項展開,

 

之后就能看到下方這個圖,勾選Analyzer Tasks下方的兩個內容,分別是檢測Leaked Activities和Find Duplicate Strings

 

之后點擊右邊的綠色三角按鈕,就可以獲得結果,點擊展開Leaked Activities,就可以看到其中泄漏的Activity對象

 

 之后可以使用MAT工具,對這個hprof文件進行轉換,然后通過MAT工具進行分析;

hprof文件的地址在項目目錄的 captures目錄下

 找到這個文件,對文件進行格式轉換,通過sdk工具中的platform-tools/hprof-conv.exe進行格式轉換:

通過cmd命令行即可:hprof-conv from.hprof to.hprof

之后生成的這個hprof文件就可以用MAT打開了,更具體的分析可以見下方數據內容:

 

 

內存分析時,其實不一定是內存泄漏就會有問題,內存泄漏指的是一些對象在強制gc之后依然沒有被釋放,但是程序本身的對象申請空間比較大,或者是多次操作總是不釋放,這樣的也會出現問題。

 

一些容易出現內存問題的場景:

1、存在多圖片的頁面,或者需要申請較大空間的情況(比如切換tab時)

2、存在listview的頁面,listview的復用及及時釋放等

3、Activity不發生變化的頁面,但數據會不變更新的邏輯

 


免責聲明!

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



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