Android SDK中的强大工具-Monitor(一)
前面的内容请参见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这个数据,在用例执行后是否会增长(不管是慢还是快,都表示有可能存在内存泄漏)