標籤:切換 釋放 按鈕 工具 查看 nbsp capture 並且 monitor
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不發生變化的頁面,但資料會不變更新的邏輯
【Android端 APP 記憶體分析】使用工具進行APP的記憶體分析