一、概述
用法简介
dumpsys
是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用下文所述的命令行选项仅获取您感兴趣的系统服务的输出。
- 使用方法
adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]
- 命令行选项
选项 | 说明 |
---|---|
-t timeout | 指定超时期限(秒)。如果未指定,默认值为 10 秒。 |
–help | 输出 dumpsys 工具的帮助文本。 |
-l | 输出可与 dumpsys 配合使用的系统服务的完整列表。 |
service [arguments] | 指定您希望输出的服务。某些服务可能允许您传递可选参数。您可以通过将 -h 选项与服务名称一起传递来了解这些可选参数 |
常用命令
adb shell dumpsys -l
通过此命令获得所有可支持功能,以下列举常用的部分
- category
category | 解释 |
---|---|
activity | AMS相关信息 |
package | PMS相关信息 |
window | PMS相关信息 |
procstats | 进程统计 |
cpuinfo | CPU |
meminfo | 内存使用情况 |
gfxinfo | 图像 |
audio | 查看声音信息,包括各个进程申请音频焦点 |
netstats | 查看网络统计信息 |
SurfaceFlinger | 图像相关 |
battery | 电池信息 |
………… 等等
二、举例部分命令使用场景
查看内存分配 meminfo
记录应用内存在不同类型的 RAM 分配之间的划分情况
内存指标概念
- USS 物理内存,进程独占的内存
- PSS 物理内存,PSS= USS+ 按比例包含共享库
- RSS 物理内存 RSS= USS+ 包含共享库
- VSS 虚拟内存 VSS= RSS+ 未分配实际物理内存
故内存的大小关系:VSS >= RSS >= PSS >= USS
RAM: 随机存取存储器
PSS概念
PSS是实际使用的物理内存,这是对应用 RAM 占用情况的衡量,考虑了在进程之间共享 RAM 页的情况。您的进程独占的 RAM 页会直接计入其 PSS 值,而与其他进程共享的 RAM 页则仅会按相应比例计入 PSS 值。例如,两个进程之间共享的 RAM 页会将其一半的大小分别计入这两个进程的 PSS 中,PSS 衡量的一个优点是,您可以将所有进程的 PSS 加起来确定所有进程占用的实际内存。这表示 PSS 是一种理想的方式,可用来衡量进程的实际 RAM 占用比重,以及相对于其他进程和可用的总 RAM 而言,对 RAM 的占用情况。
adb shell dumpsys meminfo
可以查看各个进程使用状况
通过这个命令我们可以一下了解到我们的手机目前占用内存从大到小的排序,com.hugh.basis
这款是我打开的调试app,在app开启后,我们也可通过此命令来看我们应用的初始内存占用多少
dumpsys meminfo
Applications Memory Usage (in Kilobytes):
Uptime: 2964163 Realtime: 2964163
Total PSS by process:
193,237K: system (pid 1529)
130,817K: com.miui.home (pid 3080 / activities)
129,076K: com.tencent.mm (pid 4578)
87,370K: com.android.systemui (pid 1948 / activities)
69,517K: surfaceflinger (pid 572)
64,283K: com.hugh.basis (pid 10651 / activities)
51,586K: com.tencent.mm:push (pid 4899)
45,177K: com.sina.weibo (pid 7078)
43,622K: com.tencent.mm:appbrand0 (pid 8304)
43,019K: com.tencent.mm:appbrand1 (pid 7867)
40,621K: com.xiaomi.market (pid 9014)
...
Total PSS by category:
399,675K: Dalvik
295,839K: Native
124,249K: .oat mmap
123,737K: .art mmap
108,692K: EGL mtrack
104,307K: .dex mmap
89,147K: Unknown
54,490K: Dalvik Other
49,158K: .so mmap
43,560K: GL mtrack
39,294K: Gfx dev
23,092K: Stack
8,624K: .apk mmap
5,751K: Other mmap
3,596K: Ashmem
2,002K: Other dev
1,115K: .ttf mmap
120K: .jar mmap
20K: Cursor
0K: Other mtrack
adb shell dumpsys meminfo package_name|pid [-d]
可以查看各个进程使用状况
如果你想看一个进程更详细内存占用,就可以加上包名或进程名,-d 标记会输出更多与 Dalvik 和 ART 内存占用情况相关的信息。
一般情况下,仅需关注 Pss Total
和 Private Dirty
列
检查电池诊断 batterystats
adb shell dumpsys batterystats
输出通常包含以下内容:
- 电池相关事件的历史记录
- 设备的全局统计信息
- 每个 UID 和系统组件的大致用电量
- 单个应用的每个数据包占用的移动网络毫秒数
- 系统 UID 汇总统计信息
- 应用 UID 汇总统计信息
测试界面性能
如果指定 gfxinfo 服务,输出中会包含录制阶段所发生的动画帧的相关性能信息。
adb shell dumpsys gfxinfo