Android中ps命令各字段的含义


通过ps命令查看进程的状态,看到如下输出:
USER      PID   PPID  VSIZE  RSS   WCHAN              PC       S  NAME
u0_a91    3140  356   2220664 85240 SyS_epoll_ 7f97b29798 S com.qiku.cardmanager
12
各字段的意义:
1 . USER:进程uid
2 . PID:进程pid
3 . PPID:父进程pid。所有app进程的父进程都是zygote, 所以zygote进程pid肯定是356:
root      356   1     2144280 65116 poll_sched 7f97b296d8 S zygote64
1
zygote的ppid为1,说明zygote父进程是init进程:
root      1     0     12852  1768  SyS_epoll_ 00004ae004 S /init
1
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消息循环的实现。
--------------------- 
作者:张纪刚 
来源:CSDN 
原文:https://blog.csdn.net/zhangjg_blog/article/details/83537869 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值