当前位置: 首页 > news >正文

性能测试之使用 adb 查看设备CPU占用与数据分析

一、如何使用 adb 获取CPU占用

1、运行 top 命令:

adb shell top

输出结果:
在这里插入图片描述

  • -d <秒>: 设置刷新间隔,如 top -d 1 每秒刷新一次。

  • -m <数量>: 显示最多多少行进程,如 top -m 10显示前10个进程。

  • -s <列名>: 按某列排序,如 top -s cpu按CPU占用率排序(-s r也可以),top -s res按内存占用排序。

2、在 top 交互界面中(运行 top 命令后)

  • 按 q:退出。
  • 按 M:按内存使用率(%MEM)排序。
  • 按 P:按CPU使用率(%CPU)排序。这是最常用的。
  • 按 R:反转排序顺序。

3、快速查看进程的CPU实时占用率

adb shell top -n 1|grep<package_name>
Windows系统请注意: grep 是一个在 Linux/Unix/macOS 等类 Unix 系统中才存在的文本搜索工具。而 Windows 系统的命令行环境默认没有这个命令。需要现在 CMD 中输入:adb shell 然后,在出现的设备命令行 $ 或 #后,输入:top -n 1 | grep <package_name>"

注:-n 1 代表只刷新一次,避免刷屏。去掉此参数可进行简单实时监控,按 Ctrl+C 退出。

二、数据解析

在这里插入图片描述

输出的数据主要包括:
进程标识:PID, USER, ARGS
调度优先级:PR, NI
内存使用:VIRT, RES, SHR, %MEM
CPU 和状态:S, %CPU
运行时间:TIME+

各列详细含义
下面我们逐列进行解释:

  1. PID
    全称: Process ID
    含义: 进程的唯一标识符。操作系统通过这个数字来识别和管理进程。
    解读: 数字越大,通常意味着进程启动得越晚。如果你想监控某个特定的进程(比如一个App),你需要找到它的PID。
  2. USER
    含义: 运行此进程的用户身份。
    解读: 在Android中,你通常会看到 root、system、u0_a123(其中数字代表App的用户ID)等。这可以帮助你判断进程是系统进程、系统服务还是第三方应用。
  3. PR
    全称: Priority
    含义: 进程的实时优先级。这是由Linux内核调度的优先级。
    解读: 数字越小,优先级越高,越容易被调度执行。这个值通常由内核动态调整,普通应用开发者很少直接修改它。
  4. NI
    全称: Nice Value
    含义: 进程的“友好度”,是用户空间可以调整的优先级修正值。
    解读: 取值范围通常是 -20 到 19。值越低(负值),优先级越高;值越高(正值),优先级越低,表示进程更“友好”,更愿意让出CPU。默认值为0。
  5. VIRT
    全称: Virtual Memory Size
    含义: 进程使用的虚拟内存总量。
    解读: 它包括应用程序代码、数据、共享库以及已经换出到磁盘(Swap)的内存等。这个值通常很大,因为它包含了进程“有权访问”的所有内存,但不一定都在物理内存中。
  6. RES
    全称: Resident Memory Size
    含义: 进程当前使用的、未被换出的物理内存大小(单位通常是KB)。
    解读: 这是衡量一个进程实际占用多少宝贵物理内存的关键指标。RES 是 VIRT 中真正在物理内存中的那一部分。
  7. SHR
    全称: Shared Memory Size
    含义: RES 中可以被其他进程共享的内存大小。
    解读: 主要是共享库(如系统库 .so 文件)占用的内存。多个进程使用同一个库时,这个库在物理内存中只有一份,但会被多个进程共享计算到它们的 SHR 中。
  8. S
    全称: Process Status
    含义: 进程的状态。
    常见状态:
  • R:正在运行或可运行(Running/Runnable)
  • S:睡眠状态(Sleeping),通常在等待某个事件(如I/O操作)
  • D:不可中断的睡眠(Uninterruptible Sleep),通常是在等待I/O,不能被信号唤醒
  • Z:僵尸进程(Zombie),进程已终止,但其父进程尚未回收其资源
  • T:已停止(Stopped),通常是由于作业控制信号(如
    SIGSTOP)
  1. %CPU
    含义: 这是你最关心的列。它表示从上一次刷新到当前时刻,进程占用CPU的百分比。
    解读: 对于一个单核CPU,100%表示这个进程占满了整个核心。对于一个多核CPU(如8核),这个值可以超过100%。例如,如果一个进程在8核设备上占满了2个核心,那么它的 %CPU 就会显示 200%。这是排查CPU性能问题和耗电问题的首要观察指标。
  2. %MEM
    含义: 进程使用的物理内存(RES)占系统总物理内存的百分比。
    解读: 帮助你快速识别内存消耗大户。
  3. TIME+
    含义: 进程自启动以来,总共在CPU中运行的时间。
    解读: +表示显示精度到百分之一秒。格式为 MMM:SS.ss。例如 12:34.56表示12分钟34.56秒。这个值持续快速增长,说明该进程长期在消耗CPU。
  4. ARGS
    全称: Arguments
    含义: 启动该进程的命令行或进程名/包名。
    解读: 在Android中,这通常显示为应用的包(如 com.android.chrome)或系统进程名(如 system_server, com.android.phone)。这是识别进程归属的最直接方式。

三、举例说明

假设你看到一行:

12345 u0_a123  20   0 1.2G 150M  80M R  45.6   3.8   1:23.45 com.example.myapp

这表示:
PID 12345,
由用户 u0_a123(一个应用)启动。
优先级(PR/NI)是 20/0,是标准优先级。使用了 1.2GB 虚拟内存,但实际占用了 150MB 物理内存,其中 80MB 是共享库。
进程状态是 R,正在运行。
在过去的一个采样周期内,CPU 占用率高达 45.6%。
它占用了设备总内存的 3.8%。
从启动到现在,它累计在 CPU 上运行了 1分钟23.45秒。
这个进程是包名为 com.example.myapp 的应用。

通过这个分析,你可以快速定位到是哪个应用(com.example.myapp)正在大量消耗CPU资源,从而进行下一步的优化或排查。

四、判断标准与总结

现在我们学会了如何查看应用的CPU占用率,当应用长时间(超过1分钟)维持在80%以上,尤其是用户没有明显操作时,会导致设备发热、卡顿、耗电加快,这通常意味着存在性能问题。

http://www.dtcms.com/a/597157.html

相关文章:

  • 【AUTOSAR SOMEIP】SD状态机
  • 海尔网站建设情况wordpress 没有保存
  • CSS 对齐
  • 从流批一体到湖仓一体架构演进的思考
  • 如何查看网站是否降权九江市住房和城乡建设厅网站
  • 从基本用法到迭代器实现—list重难点突破
  • 智能建站软件宁波房产网二手房出售
  • 如何从iPhone向Android 发送视频?8 种方法
  • LLM 相关内容
  • 研发管理知识库(4)华为研发管理流程简介
  • 【国内电子数据取证厂商龙信科技】手机取证之文件碎片
  • 【OpenCV + VS】OpenCV初步:在VS中配置并运行第一个OpenCV Demo
  • Java入门——Java跨平台的原理
  • 16、做中学 | 初三上期 Golang面向对象_进阶
  • Java 不同创建线程的方式什么时候才可以使用 this 来获取线程的引用
  • 兰州做网站的公司wordpress标签云美化
  • MATLAB基于PSO-GA的铁路工程施工进度计划多目标优化研究
  • JavaScript的BOM学习笔记——1、浏览器对象模型
  • python将Excel数据写进图片中
  • 五金配件网站建设报价圣弓 网站建设
  • Django中如何重写save()方法
  • C在线编程 | 提升编程技能,掌握C语言的核心要点
  • 京东这样的网站怎么做网站建设费用怎么算
  • django模型数据查询
  • 佛山骏域网站建设软件开发价格标准
  • discuz企业网站一诺摄影设计
  • 基于微信小程序的特色农产品交易系统
  • 【windows常见问题】pin不可用,无法登录Windows
  • 免费正能量励志网站网站登陆界面怎么做
  • 网站建设找丿金手指排名在iis上部署的网站本机无法浏览解决方法