Android SDK中的强大工具——Monitor(一)

Android SDK中的强大工具-Monitor(一)

前面的内容请参见Android应用自动化测试-提纲 本篇我们来看一看Android SDK中一个非常强大但是经常被大家忽视的工具或者说工具集-Monitor。

Monitor工具位于Android SDK的tools目录下,windows下,我们运行Monitor.bat即可启动Monitor工具的主界面

img

devices

工具界面的左侧的devices界面是设备及进程信息,会显示连接在当前电脑上的所有android设备信息及其中的进程信息。

设备信息的三个字段含义分别是

设备名–设备状态–平台版本

进程信息的三个字段含义分别是

进程名-进程PID–DDMS监控端口

ddms在设备端从8600开始为每一个进程分配一个单独的端口号,在PC端则自己使用8700接收所有console过来的指令

在Devices界面上排的一列工具栏,对应Monitor工具右侧界面的相应功能。下面逐一详细说明:

update Heap

update heap更新堆内存,会更新所选择进程的堆信息。执行该操作后,在右侧heap的tab页中可以查看heap信息,执行cause GC后即可看到如图界面

img

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这个数据,在用例执行后是否会增长(不管是慢还是快,都表示有可能存在内存泄漏)