内存

在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销。由于一个移动设备的内存是固定的,如果内存消耗过大就会造成应用卡顿或者闪退,需要对内存进行测试。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性

测试点:

1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。

2、中强度状态:时间偏长的操作应用。

3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。

** 内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少 **

测试方法:
1、使用adb命令: adb shell dumpsys meminfo packageName

获取应用包名和Actively:
adb shell dumpsys window | findstr mCurrentFocus




在iOS上自动检测内存泄露 app内存泄漏测试_app性能测试


测试关注点:

1、Native heap alloc

2、Dalvik heap alloc

3、PSS


在iOS上自动检测内存泄露 app内存泄漏测试_数据_02


2、使用性能测试工具:Emmagee(只支持Android)

Emmagee是网易开发的一款测安卓应用性能的测试apk

1、安装Emmagee.apk,打开。

2、选择需要测试性能的应用启动

3、被测应用界面会展示内存、CPU、电流、流量等数据

4、stop Test之后,在本地SD卡中保存一份性能测试数据,可以从里面获取内存信息。

5、可以通过execl将数据转化成图表,更直观的查看各性能指标的数据。

(保存地址:/sdcard/Emmagee/******* .csv文件)


在iOS上自动检测内存泄露 app内存泄漏测试_app性能测试_03


生成的csv文件:


在iOS上自动检测内存泄露 app内存泄漏测试_数据_04


原理:Emmagee是使用Android自身提供的ActivityManager.MemoryInfo()方法获得

可查看: cpu 内存 流量 电量 FPS(流畅度)是一个相对比较好的选择

但是只支持安卓6.0及以下的版本

除了Emmagee,还有腾讯提供的一个同样测试性能的app, GT。使用与Emmagee大体一致,但是GT除了支持Android,同样支持ios。GT相对于Emmagee功能也更强大:性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计。

3、使用AndroidStudio 自带 CPU 和内存检测功能 – Android Monitor

(首先要下载并安装好Android Studio)

Android Monitor 可以检测CPU 和内存,能够绘制出变化图,可以直观明了的看出内存和cpu的变化曲线。


在iOS上自动检测内存泄露 app内存泄漏测试_在iOS上自动检测内存泄露_05


Android Monitor ,有5个模块 :logcat、Memory、CPU、Network、GPU。


在iOS上自动检测内存泄露 app内存泄漏测试_数据_06


关注点:

1、退出某个页面后,内存是否有回落。

如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。

2、进行某个操作后,内存是否增长过快。

如果增长过快,也有可能存在风险,需重复操作确认。