前面的內容請參見Android應用自動化測試-提綱。 本篇我們來看一看Android SDK中一個非常強大但是經常被大家忽視的工具或者說工具集-Monitor。
Monitor工具位于Android SDK的tools目錄下,windows下,我們運行Monitor.bat即可啟動Monitor工具的主界面
devices
工具界面的左側的devices界面是設備及進程信息,會顯示連接在當前電腦上的所有android設備信息及其中的進程信息。
設備信息的三個字段含義分別是
設備名--設備狀態--平臺版本
進程信息的三個字段含義分別是
進程名-進程PID--DDMS監控端口
ddms在設備端從8600開始為每一個進程分配一個單獨的端口號,在PC端則自己使用8700接收所有console過來的指令
在Devices界面上排的一列工具欄,對應Monitor工具右側界面的相應功能。下面逐一詳細說明:
update Heap
update heap更新堆內存,會更新所選擇進程的堆信息。執行該操作后,在右側heap的tab頁中可以查看heap信息,執行cause GC后即可看到如圖界面
Cause GC欄的含義:
列名 | 含義 |
---|---|
Heap Size | 堆棧分配給App的內存大小 |
Allocated | 已分配使用的內存大小 |
Free | 空閑的內存大小 |
%Used | Allocated/Heap Size使用率 |
Objects | 對象數量 |
Display表中各字段含義如下:
列名 | 含義 |
---|---|
Type | 類型 |
Count | 數量 |
Total Siz | e 總共占用的內存大小 |
Smallest | 將對象占用內存的大小從小往大排,排在第一個的對象占用內存大小 |
Largest | 將對象占用內存的大小從小往大排,排在最后一個的對象占用的內存大小 |
Median | 將對象占用內存的大小從小往大排,拍在中間的對象占用的內存大小 |
Average | 平均值 |
其中類型的主要包含:
類型 | 含義 |
---|---|
free | 空閑的對象 |
data object | 數據對象,類類型對象,最主要的觀察對象 |
class object | 類類型的引用對象 |
1-byte array(byte[],boolean[]) | 一個字節的數組對象 |
2-byte array(short[],char[]) | 兩個字節的數組對象 |
4-byte array(long[],double[]) | 4個字節的數組對象 |
non-Java object | 非Java對象 |
下面的堆圖, 橫坐標是對象的內存大小,這些值隨著不同對象是不同的,縱坐標是在某個內存大小上的對象的數量
heap在我們分析內存泄漏時是非常有用的,我們一般可以關注data object的total size這個數據,在用例執行后是否會增長(不管是慢還是快,都表示有可能存在內存泄漏)