菜鸟科技网

dumpsys命令能查看哪些系统信息?

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

dumpsys命令能查看哪些系统信息?-图1
(图片来源网络,侵删)

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)。
  • 安卓版本、设备配置(如屏幕分辨率、语言)等基础信息。

示例输出片段

dumpsys命令能查看哪些系统信息?-图2
(图片来源网络,侵删)
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)

输出电池的实时状态,关键字段包括:

dumpsys命令能查看哪些系统信息?-图3
(图片来源网络,侵删)
  • 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 获取所有支持的服务名称。

应用场景举例

  1. ANR(应用无响应)分析
    发生 ANR 时,通过 dumpsys activity top 查看当前栈顶 Activity 的状态,结合 dumpsys meminfo 分析内存是否过高,或检查主线程是否卡顿。

  2. 内存泄漏排查
    长期运行应用后,使用 dumpsys meminfo <包名> 观察内存是否持续增长,特别是 Private Dirty 和 Pss 值,若异常升高可能存在泄漏。

  3. 设备异常状态检查
    如手机耗电快,可通过 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_timethisTime 字段: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 的启动耗时。

分享:
扫描分享到社交APP
上一篇
下一篇