Android应用内存检测分析工具

本文章转载于搜狗测试

Android应用的内存有多种字段组成,例如Native Heap、Dalvik Heap等等,这一数据可以通过adb命令adb shell dumpsys meminfo <指定包名>获得。小编今天要介绍的并不是dumpsys meminfo工具,而是介绍如果使用Python来记录meminfo的数据并绘制成曲线,方便对内存的分析。

程序下载地址

http://share.weiyun.com/19eda7180d626fcc190e670a321dd21c

源码下载地址

https://github.com/ZhugeDongming/memmonitor

实现效果

Android应用内存检测分析工具_第1张图片
Android应用内存检测分析工具_第2张图片

实现过程

下面小编介绍下该工具的大致实现过程和重点的代码。大致内容为:

1.Meminfo数据简介

2.使用Python对meminfo数据定期进行采集和保存

3.解析读取meminfo中的内存数据,保存至自定义数据结构

a.使用Python的类进行自定义数据结构封装

b.使用PyUnit对自定义的数据结构进行单元测试

4.将自定义数据结构中的数据写入Excel文件中,方便绘图

Meminfo数据简介

手机USB连接到电脑的情况下,在电脑的命令行下输入如下形式的命令即可获得指定包名的内存

adb shell dumpsys meminfo

例如:adb shell dumpsys meminfo com.sohu.inputmethod.sogou

Android应用内存检测分析工具_第3张图片

各个字段的含义:

Android应用内存检测分析工具_第4张图片

到这里我们已经了解meminfo命令的用法和大致内容。接下来,我们将使用Python编写脚本对meminfo数据进行定期采集、记录和保存。

Meminfo数据采集和保存

1.先对数据采集模块进行一个封装

Android应用内存检测分析工具_第5张图片

2.接着写个Main函数来运行

Android应用内存检测分析工具_第6张图片

至此,对meminfo的数据就做到了可以指定appname进行采集和保存,保存路径<程序目录>\\result\\<日期命名>.log。

解析读取Meminfo内存数据

Python提供的list和dict数据功能强大,但是在此例中并不方便数据的记录和保存,因此我们先做一件事:

a.使用Python的类进行自定义数据结构封装

通过对meminfo的数据分析,我们对数据结构建模得到如下结构:

Android应用内存检测分析工具_第7张图片

从上结构可以看到,这是一个三维的数据结构,如Native Heap下有PssTotal、PrivateDirty,而PssTotal和PrivateDirty下面要有一个list保存每次采集的数据。除了Native Heap,还有Dalvik Heap,Dalvik Heap也有PssTotal和PrivateDirty…..

基于此,我们封装一个数据结构,便于保存和使用以上的数据。

Android应用内存检测分析工具_第8张图片

b.使用PyUnit对自定义的数据结构进行单元测试

作为测试,自己写的测试代码应该也要测测喽。为此我们选用PyUnit对以上数据结构的函数进行单元测试。

Step1:新建一个单测py文件

Step2:加载对应的模块和编写main函数。

Android应用内存检测分析工具_第9张图片

Step3:编写两条测试Clist_coloum和Clist_type的单测用例

Android应用内存检测分析工具_第10张图片

Step4:运行CListEx_UnitTest.py文件,测试通过。

Android应用内存检测分析工具_第11张图片

Meminfo数据简介

为了方便绘图,一个好的办法是将解析后的数据保存至Excel中,后续直接使用Excel的折线图即可绘制相应的图形。

Step1:解析采集后的数据到自定义数据结构中

Android应用内存检测分析工具_第12张图片

Step2:将数据保存至Excel文件。

这里Python操作Excel文件使用了两个功能强大的开源库,小伙伴们需要先安装xlwt(http://pypi.python.org/pypi/xlwt)到本地python库中,否则import xlwt会报错

Android应用内存检测分析工具_第13张图片

至此,一个内存数据采集、分析和保存的小工具就做完了。

你可能感兴趣的:(Android应用内存检测分析工具)