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

发布于 2022-07-15 10:45