优秀的编程知识分享平台

网站首页 > 技术文章 正文

Android性能测试方法大放送(2)-内存和CPU测试

nanyue 2024-08-29 20:52:02 技术文章 4 ℃

内存和CPU测试主要是为了检测应用在用户不同使用强度下消耗手机内存和CPU的情况,如果内存消耗过大会造成手机使用时卡顿,运行不流畅,闪退、打开应用速度慢等现象,从而影响用户体验,让用户在使用中消耗较多的时间以及恼火的等待。因此,应用的内存占用大小也是产品体验好坏一个重要指标和测试重点。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。根据手机的使用应用频度和强度不同,可将应用使用强度分为如下几种状态:

空闲状态:指启动应用后,应用中无相关的数据信息,不做任何操作或切换到后台运行的情况称为空闲状态,该情况为应用对内存的消耗是最小的。启动速度应为最快的。

中强度状态:应用存在用户数据,并在设备后天挂载一定数量的进程,使用较长时间的应用。

高强度状态:该种情况为应用内高频率的使用,用户很少达到,跑monkey时可认为高强度状态,该种情况常用来测试应用内存泄漏和系统稳定性的情况测试时,可根据用户的操作习惯模拟应用使用频率和强度等级。

下面介绍一些测试方法。

1、adb 命令--查看 CPU占用率

使用命令adb shell top -m 10 -s cpu(-s 按指定行排序,-m 显示最大数量)如下所示:

其中参数含义如下:

PID:progressidentification,应用程序ID

S: 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

#THR:程序当前所用的线程数

VSS:VirtualSet Size虚拟耗用内存(包含共享库占用的内存)

RSS: ResidentSet Size实际使用物理内存(包含共享库占用的内存)

UID:UserIdentification,用户身份ID

Name:应用程序名称

2、查看内存使用情况

使用如下命令:adb shell dumpsys meminfo <package_name>或dumpsys meminfo <package_id>

参数含义:

Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间

Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间

Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间

Native Heap Size 约等于Native Heap Alloc + Native Heap Free

mallinfo是一个C库, mallinfo 函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。

Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。

Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的内存大小。

Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。

Dalvik Heap Size 约等于Dalvik HeapAlloc + Dalvik Heap Free

重点关注如下几个字段:

(1) Native/Dalvik 的 Heap 信息中的alloc

具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。

(2) Total 的 PSS 信息

这个值就是你的应用真正占据的内存大小,通过这个信息,可以初步判别手机中哪些程序占内存比较大。

Tags:

最近发表
标签列表