dumpsys 是 Android 系统中一个功能强大的命令行工具,主要用于查看和导出系统服务的状态信息,它运行在 Android 设备的 shell 环境中,通过调用系统服务的 dump 方法,获取服务的内部数据、运行状态、配置参数等详细信息,是开发者和运维人员调试、分析系统问题的重要手段。

dumpsys 命令的基本使用
dumpsys 命令的基本语法为 dumpsys [服务名] [选项],其中服务名可选,若不指定服务名,命令会输出所有已注册系统服务的简要摘要;若指定服务名,则输出该服务的详细信息。
dumpsys:输出所有服务的摘要列表。dumpsys activity:输出 Activity Manager 服务的详细信息,包括当前栈内 Activity、任务栈状态、进程信息等。dumpsys meminfo <包名/PID>:查看指定应用或进程的内存使用情况,包括堆内存、栈内存、映射内存等。dumpys battery:查看电池状态,如当前电量、温度、健康状态、充电类型等。
核心功能与常见服务详解
dumpsys 支持查看数十种系统服务,以下列举几个常用服务的核心功能及输出信息示例:
Activity Manager(activity)
负责管理 Activity、Service、广播等组件的生命周期,是 Android 系统的核心服务之一,通过 dumpsys activity 可获取:
- 当前运行的任务栈(Task Stack),包括栈内 Activity 的类名、状态(如 resumed、paused、stopped)。
- 进程信息(Process List),如进程 PID、包名、进程状态(如 foreground、background)。
- 安卓版本、设备配置(如屏幕分辨率、语言)等基础信息。
示例输出片段:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Running activities (most recent first):
Task id #1
Run #0: ActivityRecord{u0 com.android.settings/.Settings t1 f}
pkg=com.android.settings cls=com.android.settings.Settings
launchedFromUid=1000 launchedFromPackage=com.android.system
taskAffinity=com.android.settings
app=ProcessRecord{u0 1234:com.android.settings/u0a12}
...
Window Manager(window)
管理窗口布局、焦点、输入事件等,输出内容包括:
- 当前窗口列表(Window List),如窗口的 token、类型(如应用窗口、系统窗口)、层级(Z-order)。
- 输入法(IME)状态,如当前输入法服务、窗口关联信息。
- 屏幕参数(如屏幕宽度、高度、密度)和显示区域(Display Bounds)。
内存管理(meminfo)
通过 dumpsys meminfo 可分析应用的内存占用,输出字段包括:
- Private Dirty:进程私有的、被修改过的内存(无法被共享,需进程自己释放)。
- Shared Dirty:进程与其他进程共享的已修改内存。
- Pss(Proportional Set Size):按比例分配的内存,反映进程对内存的实际占用(推荐关注此指标)。
- Heap Alloc:堆内存分配总量。
示例(查看微信进程内存):
dumpsys meminfo com.tencent.mm
Shared Private Heap Heap Other
DIRTY DIRTY Size Alloc Size
----------------------------------------
Total: 45.2MB 32.1MB 28.5MB 25.3MB 10.1MB
Dalvik: 12.3MB 8.7MB 28.5MB 25.3MB 0.0MB
Native: 30.1MB 20.4MB 0.0MB 0.0MB 10.1MB
Other: 2.8MB 3.0MB 0.0MB 0.0MB 0.0MB
电池服务(battery)
输出电池的实时状态,关键字段包括:

level:当前电量百分比(如 85 表示 85%)。status:充电状态(如 charging、discharging、not charging)。health:电池健康状态(如 good、overheat、dead)。technology:电池技术类型(如 Li-ion)。voltage:当前电压(单位:mV)。
网络服务(connectivity)
查看网络连接状态,包括:
- 当前活动网络(Active Network):类型(Wi-Fi、移动数据)、IP 地址、代理配置。
- 网络统计(Network Statistics):上传/下载字节数、数据包数量。
- Wi-Fi 信息:SSID、BSSID、信号强度(RSSI)、IP 地址。
高级用法与过滤技巧
dumpsys 的输出信息量较大,可通过以下方式过滤关键内容:
- 使用 grep 提取关键字:
dumpsys activity | grep "mFocusedActivity" # 查看当前焦点 Activity dumpsys meminfo com.example.app | grep "Pss" # 查看应用 PSS 内存 - 指定输出格式:部分服务支持
-h参数查看帮助信息,如dumpsys activity -h。 - 查看服务列表:通过
dumpsys -l获取所有支持的服务名称。
应用场景举例
-
ANR(应用无响应)分析:
发生 ANR 时,通过dumpsys activity top查看当前栈顶 Activity 的状态,结合dumpsys meminfo分析内存是否过高,或检查主线程是否卡顿。 -
内存泄漏排查:
长期运行应用后,使用dumpsys meminfo <包名>观察内存是否持续增长,特别是 Private Dirty 和 Pss 值,若异常升高可能存在泄漏。 -
设备异常状态检查:
如手机耗电快,可通过dumpsys battery查看电池健康状态,或dumpsys power检查唤醒锁(WakeLock)是否被异常持有。
相关问答FAQs
Q1:dumpsys 和 logcat 有什么区别?
A1:dumpsys 和 logcat 都是 Android 调试工具,但功能不同,dumpsys 用于静态导出系统服务的当前状态信息(如内存、电池、窗口布局),属于“快照式”数据;而 logcat 用于实时打印系统或应用的日志输出(如打印语句、异常堆栈、生命周期回调),属于“流式”数据,排查内存问题用 dumpsys meminfo,查看应用运行日志用 logcat。
Q2:如何通过 dumpsys 查看某个应用的启动时间?
A2:可以通过 dumpsys activity top 命令查看当前栈顶 Activity 的启动信息,在输出中找到 am_current_time 和 thisTime 字段:thisTime 表示当前 Activity 的启动耗时(从 startActivity 到 onWindowFocusChanged 的时间差),am_current_time 表示系统启动后的总时间(ms)。
dumpsys activity top | grep -E "thisTime|am_current_time"
am_current_time: 12345678ms
thisTime: 350ms
350ms 即为当前 Activity 的启动耗时。
