使用DDMS測試安卓手機APP的性能(android)


安裝/配置:

通過另外一個工具也可以測試手機客戶端APP的性能,這就是android開發包中的DDMS工具(Dalvik Debug Monitor Service),先來說一下android開發包的安裝:

1、 首先安裝JDK,1.5以上的版本

2、 在安裝完JDK 后,就需要下載及安裝Android SDK,即: android-sdk-windows,壓縮包大約有551M左右

3、 解壓縮android-sdk-windows,放在C盤的根目錄下,配置系統變量path 的值為:C: \android-sdk-windows\tools

啟動:

1、 可以在運行中進入ddms

clip_image001

2、也可以在C: \android-sdk-windows\tools目錄下啟動ddms.bat

連接:

1、 使用數據線連接安卓系統的手機,確認手機是處於“USB調試”模式

1)在手機上按下“Menu”鍵,在彈出的菜單中選擇“Setting(設置)”;
2)選擇“應用程序”;
3)在此界面勾選“未知來源”,然后選擇“開發”;
4)勾選“USB調試”,“保持喚醒狀態”;

2、 在ddms的左邊框中會顯示手機已經打開的應用程序(APP)進程,如果不顯示,可以多連接幾次,或者換個手機試試

clip_image002

操作:

前提是要打開我們要分析的手機客戶端app程序(網上隨便找的APK程序)

1. 點擊選中想要監測的進程,比如system_process進程;
2. 點擊選中Devices視圖界面中最上方一排圖標中的“Update Heap”圖標;
3. 點擊Heap視圖中的“Cause GC”按鈕;
4. 此時在Heap視圖中就會看到當前選中的進程的內存使用量的詳細情況。

分析:

如何才能知道我們的程序是否有內存泄漏的可能性呢。這里需要注意一個值:Heap視圖中部有一個Type叫做data object,即數據對象,也就是我們的程序中大量存在的類類型的對象。在data object一行中有一列是“Total Size”,其值就是當前進程中所有Java數據對象的內存總量,一般情況下,這個值的大小決定了是否會有內存泄漏。可以這樣判斷:

a) 不斷的操作當前應用,同時注意觀察data object的Total Size值;

b) 正常情況下Total Size值都會穩定在一個有限的范圍內,也就是說由於程序中的的代碼良好,沒有造成對象不被垃圾回收的情況,所以說雖然我們不斷的操作會不斷的生成很多對象,而在虛擬機不斷的進行GC的過程中,這些對象都被回收了,內存占用量會會落到一個穩定的水平;

c) 反之如果代碼中存在沒有釋放對象引用的情況,則data object的Total Size值在每次GC后不會有明顯的回落,隨着操作次數的增多Total Size的值會越來越大,直到到達一個上限后導致進程被kill掉。

d) 此處已system_process進程為例,在我的測試環境中system_process進程所占用的內存的data object的Total Size正常情況下會穩定在2.2~2.8之間,而當其值超過3.55后進程就會被kill。

clip_image004

clip_image006

clip_image008

clip_image010

clip_image012

參考文檔: http://hi.baidu.com/2012jasonhao/item/27fafb0c014a5ac42f4c6b25


免責聲明!

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



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