Android 性能測試——Memory Monitor 工具


Android 性能測試——Memory Monitor 工具

 

Memory Monitor能做什么?

  • 實時查看App的內存分配情況
  • 快速判斷App是否由於GC操作造成卡頓
  • 快速判斷App的Crash是否是因為超出了內存

Memory Monitor使用准備

  • 開發者選項可用
  • USB調試開啟

備注:Android Studio的Enable ADB Integration勾選(Tools/Android下)。

Memory Monitor面板

首先執行adb devices來確保設備可用,然后啟動Android Studio,選擇一個Android項目或者新建一個項目進入主面板,如果你有你的待測App的源碼,那么最好進入你自己的App項目中,這樣方便調試和定位問題。進入項目后,可以看到Android Studio的主面板左下角有一個Android標簽: 
這里寫圖片描述

點擊該標簽打開Android面板,如下圖所示: 
這里寫圖片描述

A:設備選擇 
B:可監控的App選擇 
C:內存的實時數據

重點來看C區域,橫坐標記錄從采集開始點到目前已經過去的時間,縱坐標是分配給App使用的內存總量[Allocated+Free],藍色區域表示已分配[Allocated]使用的的,灰色區域表示空閑[Free]未使用的。在坐標軸的右邊可以看見具體數值。

GC

GC就是垃圾回收的意思,我們可以從Memory monitor看到何時發生了GC event,當一個內存短時間內發生掉落,我們可以認為發生了GC操作。你也可以手動觸發GC,下圖中的小車子就是觸發GC的按鈕,一旦按下就會回收那些沒被引用的對象(這個地方不能說沒用的對象,因為沒用的對象有可能是內存泄漏時的對象,后期會來研究): 
這里寫圖片描述

Memory Monitor可以發現的問題

Memory Monitor工具為監控工具,是一種發現型或者說監控性質的工具,比如醫生的四大技能[望聞問切],[望]是第一步。這里的Memory Monitor就是一種[望]的工具,目前我主要用它來看下面幾個內存問題: 
1.發現內存抖動的場景 
2.發現大內存對象分配的場景 
3.發現內存不斷增長的場景 
4.確定卡頓問題是否因為執行了GC操作

案例分析

這里寫圖片描述

上面的第一段標記顯示內存突然增加了7M,我們也能看的很清楚,所以這個點我們要去定位了一下問題在哪里,是Bitmap還是什么原因造成的,第二段標記是內存抖動,很明顯在很短的時間了發生了多次的內存分配和釋放。而且在發生內存抖動的時候,也能感覺到App的卡頓,可以看出來是由於執行了GC操作造成的。 
內存的不斷增加通過Memory monitor很容易看出來,藍色的曲線是一路高歌猛進的,一看便知。

關於內存泄漏的問題

Memory Monitor也可以歸納到用於檢測內存泄漏的工具,但是我沒這么做,因為在實際過程中,當泄漏的點每一次很小的時候,你很難發現,沒有Heap Viewer好使。如果泄漏的對象占用內存大的話,也能通過Memory Monitor看出來。


免責聲明!

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



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