干货分享:Monitor工具介绍
Monitor工具位于Android SDK的tools目录中,在windows系统下,点击Monitor.bat即可启动。
Monitor的功能界面主要从下面三块来介绍:
一、devices:
工具界面左侧的devices界面显示设备及进程信息相关信息。
1. 连接android设备后,显示设备信息的三个字段:设备名,设备状态,平台版本
2. 打开android设备中的应用程序,显示该应用程序的信息:进程名,进程PID,DDMS监控端口
(DDMS:Dalvik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务)
DDMS在设备端从8600开始为每一个进程分配一个单独的端口号,在PC端则自己使用8700接收所有控制台发过来的指令
二、Logcat
在Monitor工具的底部是监测系统日志的Logcat模块,在我们开发、测试的过程中,经常需要通过这个模块来查看应用程序执行后的状态。
日志输出:
l 绿色是程序执行的时候出现的说明性信息
l 蓝色表示调试信息
l 橙色表示警告信息
l 红色表示错误信息
三、工具栏
在Devices界面上排的一列为工具栏,对应Monitor工具右侧界面的相应功能。
1、update heap
update heap更新堆内存,会更新所选择进程的堆信息。执行该操作后,在右侧heap的tab页中可以查看heap信息,执行Cause GC(垃圾回收),可以看到目前堆内存的使用情况。可以对当前进程的内存使用情况进行分析,如图:
2、Cause GC栏的含义:
- Heap Size:堆栈分配给app的内存大小
- Allocated:已分配使用的内存大小
- Free:空闲的内存大小
- %Used:Allocated/Heap Size使用率
- Objects:对象数量
3、Display表中各字段含义如下:
- Type 类型
- Count 数量
- Total Siz 总共占用的内存大小
- Smallest 将对象占用内存的大小从小往大排,排在第一个的对象占用内存大小
- Largest 将对象占用内存的大小从小往大排,排在最后一个的对象占用的内存大小
- Median 将对象占用内存的大小从小往大排,拍在中间的对象占用的内存大小
- Average 平均值
4、其中类型主要包含:
- 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这个数据,在用例执行后是否会增长(不管是慢还是快,都表示有可能存在内存泄漏)。