Android性能测试 您所在的位置:网站首页 查看手机运行内存占用情况 Android性能测试

Android性能测试

2024-06-29 03:57| 来源: 网络整理| 查看: 265

Android性能测试——获取内存和cpu使用情况

在测试Android应用的过程中,内存和cpu值大小是测试的重点之一,本文将列举几种工作中常用的获取方式。

一、使用top获取内存和cpu信息

获取内存和cpu信息的最简单方式就是使用adb shell 自带的top命令,在测试过程中,电脑连接设备,使用adb shell top命令,即可得到近乎实时的应用内存使用情况。Android8.0+以上的设备或许有些不同,但内容

Android8.0以下的设备

Android8.0以下的设备,top后可以跟一些参数来限制打印的结果 top 后可跟的参数如下

Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [-t ] [ -h ] -m num Maximum number of processes to display. 最多显示多少个进程 -n num Updates to show before exiting. 刷新次数 -d num Seconds to wait between updates. 刷新间隔时间(默认5秒) -s col Column to sort by (cpu,vss,rss,thr). 按哪列排序 -t Show threads instead of processes. 显示线程信息而不是进程 -h Display this help screen. 显示帮助文档

打印的top结果如下

User 8%, System 4%, IOW 0%, IRQ 0% User 153 + Nice 1 + Sys 91 + Idle 1600 + IOW 0 + IRQ 0 + SIRQ 1 = 1846 PID PR CPU% S #THR VSS RSS PCY UID Name 2103 2 7% S 75 1807528K 187764K fg u0_a16 com.android.systemui 438 0 2% S 15 145984K 8428K fg system /system/bin/surfaceflinger 1333 0 1% S 176 2404956K 137780K fg system system_server 11112 0 0% S 1 0K 0K fg root kworker/u16:5 12102 6 0% R 1 5200K 1776K fg shell top ...

对于top打印的结果,第二行各个数据解释:

User 处于用户态的运行时间,不包含优先值为负进程 Nice 优先值为负的进程所占用的CPU时间 Sys 处于核心态的运行时间 Idle 除IO等待时间以外的其它等待时间 IOW IO等待时间 IRQ 硬中断时间 SIRQ 软中断时间

第三行各个数据解释

PID 进程id PR 优先级 CPU% 当前瞬时CPU占用率 S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程 THR 程序当前所用的线程数 VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存),是单个进程全部可访问的地址空间 RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存),是单个进程实际占用的内存大小,对于单个共享库, 尽管无论多少个进程使用,实际该共享库只会被装入内存一次。 PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND UID 进程所有者的用户id Name 进程的名称 Android8.0以上的设备

Android8.0及以上设备,top 后可跟的参数如下

Android8.0及以上设备的结果类似linux的结果,打印的top结果如下

[?25l [0m [H [J [s [999C [999B [6n [uTasks: 596 total, 2 running, 554 sleeping, 0 stopped, 0 zombie Mem: 5862776k total, 5755700k used, 107076k free, 10264k buffers Swap: 2293756k total, 0k used, 2293756k free, 2825024k cached 800%cpu 21%user 145%nice 76%sys 534%idle 10%iow 0%irq 14%sirq 0%host [7m PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS [0m 7048 u0_a40104 30 10 1.3G 181M 106M R 124 3.1 0:17.86 dex2oat --zip-f+ 7083 shell 20 0 12M 2.4M 1.6M R 34.4 0.0 0:00.05 top 4363 u0_a96 20 0 4.3G 81M 51M S 20.6 1.4 0:05.18 com.huawei.appm+ 351 root -2 0 0 0 0 S 20.6 0.0 0:02.00 [dhd_rxf] ...

对于top打印的结果,第二行各个数据解释:

Mem: 5862776k total, 5755700k used, 107076k free, 10264k buffers 表示 Mem total used free buffers: 总内存,已使用多少,空闲多少,缓冲区还有多少

第三行各个数据解释:

Swap: 2293756k total, 0k used, 2293756k free, 2825024k cached 表示 Swap total used free cached:交换区全部、已使用、空闲和缓冲交换空间

第四行各cpu运行状态:

800%cpu 21%user 145%nice 76%sys 534%idle 10%iow 0%irq 14%sirq 0%host 表示 cpu 全总的cpu能力,正常可以理解为有n核,总的就是n*100% user: 运行(未调整优先级的) 用户进程的CPU占用 niced:运行已调整优先级的用户进程的CPU占用 sys: 运行内核进程的CPU占用 idle:空闲的cpu比率 iow IO wait: 用于等待IO完成的CPU比率 ...

第五行是每个应用的具体信息,说明如下

PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS 表示 PID:进程ID,进程的唯一标识符 USER:进程所有者的实际用户名 PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。 NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT:virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES:常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb SHR:shared memory 共享内存 %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100 %MEM:进程使用的可用物理内存百分比 TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 ARGS:运行进程所使用的命令。进程名称(命令名/命令行) 二、使用cpuinfo和meminfo获取内存和cpu信息

无论对Android哪个版本,都可以获取应用的内存PSS( Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) )信息,命令如下:

adb shell dumpsys meminfo

无论对Android哪个版本,都可以获取应用cpu使用情况

adb shell dumpsys cpuinfo


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有