Android中ps命令各字段的含义

通过ps命令查看进程的状态,看到如下输出:

USER      PID   PPID  VSIZE  RSS   WCHAN              PC       S  NAMEu0_a91    3140  356   2220664 85240 SyS_epoll_ 7f97b29798 S com.qiku.cardmanager

各字段的意义:

1 . USER:进程uid
2 . PID:进程pid
3 . PPID:父进程pid。所有app进程的父进程都是zygote, 所以zygote进程pid肯定是356:

root      356   1     2144280 65116 poll_sched 7f97b296d8 S zygote64

zygote的ppid为1,说明zygote父进程是init进程:

root      1     0     12852  1768  SyS_epoll_ 00004ae004 S /init

4 . VSIZE : 进程虚拟地址空间的大小。man ps中对VSIZE的解释:

virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change.

5.RSS:进程所占的物理内存大小。man ps中对RSS的解释:

resident set size, the non-swapped physical memory that a task has used (in kiloBytes).

6.PC:program counter,程序计数器。

7.Name:进程名

8.S 进程状态,常见的状态如下:

R 正在运行或在运行队列上等待调度
S 正在睡眠,该睡眠可被中断,如可以被信号唤醒
D 正在睡眠,该睡眠不可被中断,不接收信号
Z zombie僵尸进程。进程死后没有被其父进程回收

9 . WCHAN :当前线程在哪个内核函数上睡眠。man ps 对该字段的解释如下:

name of the kernel function in which the process is sleeping, a “-” if the process is running, or a “*” if the process is multi-threaded and ps is not displaying threads.

SyS_epoll_ 说明进程的主线程正在消息队列上等待,比如我们分析Android ANR问题时,经常遇到如下日志,说明主线程正在内核的epoll上睡眠,也就是说主线程正在消息循环上等待,因为消息循环就是通过epoll实现的。

在另一篇文章中消息介绍Android消息循环的实现。

更多相关文章

  1. Android(安卓)启动过程
  2. 友盟推送android 8.0系统不显示推送消息问题
  3. 浅析android通过jni控制service服务程序的简易流程
  4. android通知栏消息
  5. org.json.JSONException: End of input at character 0 of
  6. 【Android(安卓)系统开发】 Android(安卓)系统启动流程简介
  7. 关于handler
  8. Android(安卓)intent
  9. 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue

随机推荐

  1. Android学习笔记(四) android 更换桌面壁
  2. Android中编译工具链的改动----LLVM份量
  3. Android调用系统程序
  4. android 中让activity全屏幕显示
  5. android 打开 url 方式
  6. Android PDF 阅读器源码
  7. Android通过摇晃手机的频率来控制声音的
  8. Android View onMeasure 方法
  9. Android 让TextView变成Dialog
  10. Android系统开发之修改调试SystemUI