前言
android基于Linux,所以android一些常用的命令还是需要掌握的,可以方便我们更好的理解android系统。楼主也经常忘记这些命令的意义,趁这次机会,比较全面的总结一下。
1.ps
首先,第一个是ps命令,这个命令不多说,大家应该都清楚,这里只强调一个不经常使用的命令。
ps -T [pid]
这个命令可以打印出当前进程的所有线程。java线程映射在原生的linux系统之上。
下面以我的手机为例,打印的线程。
从中大家可以看到,PID可以理解为线程ID,PPID可以理解为父线程的线程id,与linux的进程的对应关系是一样的,只是由进程改为了线程。这里可以用更专业的tid和ttid来使用
从这个里面可以看出很多有意思的东西。
首先,10138可以看出是所有线程的父线程,也就是我们的主线程,可以看出和pid相等。类似init进程是所有进程的父进程。
其次,还有以下几个娘胎里面带着的线程
- JIT,这个不需要解释吧,java著名的即时编译(just-in-time)
- Signal Catcher(ANR等相关处理就在这里,这个知识点很有意思,大家可以参考Android trace文件抓取原理
或者gityuan的java层次trace文件和native层trace文件。), - JDWP(调试专用),
- 两个binder线程池(想想哪两个,ApplicationThread肯定有一个,还有一个是和WMS交互的)。
- RenderThread,这个不用解释吧?android渲染线程,还记得三缓冲吗?
大家还可以发现,主线程的pid就是进程id,而主线程的父线程的ppid就是645。而645就是android大名鼎鼎的zygote进程。
这里面的线程,除了blockcannary和leakcannary相关线程,其他每个都涉及很多知识点,我们后面的博客再来讨论。
uptime
这个命令使用来看平均负载的。