【Android端 APP 記憶體分析】使用工具進行APP的記憶體分析

來源:互聯網
上載者:User

標籤:切換   釋放   按鈕   工具   查看   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的記憶體分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.