1 查看Activity所在进程
从logcat可以直接看到PID(Process ID)
然后利用adb shell ps 查看进程内部的线程
-T 显示所有线程
adb shell ps -T -p 10724
USER PID TID PPID VSZ RSS WCHAN ADDR S CMD
u0_a239 7532 7532 633 4468008 123960 0 0 S tudyproject.app(main)
u0_a239 7532 7547 633 4468008 123960 0 0 S Binder:7532_1 (ApplicatoinThread)
u0_a239 7532 7548 633 4468008 123960 0 0 S Binder:7532_2 (ViewRoot.W)
u0_a239 7532 7549 633 4468008 123960 0 0 S Binder:7532_3 (Dont know now)
------------------below is the JVM(ART or Davlik) Thread -----------------------------
u0_a239 7532 7554 633 4468008 123960 0 0 S RenderThread (Surface thread)
u0_a239 7532 7538 633 4468008 123960 0 0 S Jit thread pool(JIT)
u0_a239 7532 7540 633 4468008 123960 0 0 S Signal Catcher(Linux Signal Recevier Thread)
u0_a239 7532 7541 633 4468008 123960 0 0 S ADB-JDWP Connected (DDMS 链接线程)
u0_a239 7532 7542 633 4468008 123960 0 0 S ReferenceQueueDaemon (引用队列Dameon 查看Daemons.java)
u0_a239 7532 7543 633 4468008 123960 0 0 S FinalizerDaemon (析构守护线程 调用对象finalizer())
u0_a239 7532 7544 633 4468008 123960 0 0 S FinalizerWatchdogDaemon (析构监控守护线程)
u0_a239 7532 7545 633 4468008 123960 0 0 S HeapTaskDaemon(堆剪裁守护线程)
u0_a239 7532 7550 633 4468008 123960 0 0 S Profile Saver (Profile Thread)
u0_a239 7532 7553 633 4468008 123960 0 0 S Binder:intercept (Dont know now)
u0_a239 7532 7656 633 4468008 123960 0 0 S queued-work-loop (Dont know now)
2 查看Service所在进程
与Activity相比 显然少了Render Thread。
USER PID TID PPID VSZ RSS WCHAN ADDR S CMD
u0_a239 10748 10748 633 4451584 98400 0 0 S ject.app:remote
u0_a239 10748 10754 633 4451584 98400 0 0 S Jit thread pool
u0_a239 10748 10755 633 4451584 98400 0 0 S Signal Catcher
u0_a239 10748 10756 633 4451584 98400 0 0 S ADB-JDWP Connec
u0_a239 10748 10757 633 4451584 98400 0 0 S ReferenceQueueD
u0_a239 10748 10758 633 4451584 98400 0 0 S FinalizerDaemon
u0_a239 10748 10759 633 4451584 98400 0 0 S FinalizerWatchd
u0_a239 10748 10760 633 4451584 98400 0 0 S HeapTaskDaemon
u0_a239 10748 10761 633 4451584 98400 0 0 S Binder:10748_1
u0_a239 10748 10762 633 4451584 98400 0 0 S Binder:10748_2
u0_a239 10748 10763 633 4451584 98400 0 0 S Binder:10748_3
u0_a239 10748 10766 633 4451584 98400 0 0 S Profile Saver
ReferenceQueueDaemon:引用队列守护线程。我们知道,在创建引用对象的时候,可以关联一个队列。当被引用对象引用的对象被GC回收的时候,被引用对象就会被加入到其创建时关联的队列去。这个加入队列的操作就是由ReferenceQueueDaemon守护线程来完成的。这样应用程序就可以知道哪些被引用对象引用的对象已经被回收了。
FinalizerDaemon:析构守护线程。对于重写了成员函数finalize的对象,它们被GC决定回收时,并没有马上被回收,而是被放入到一个队列中,等待FinalizerDaemon守护线程去调用它们的成员函数finalize,然后再被回收。
FinalizerWatchdogDaemon:析构监护守护线程。用来监控FinalizerDaemon线程的执行。一旦检测那些重定了成员函数finalize的对象在执行成员函数finalize时超出一定的时候,那么就会退出VM。
HeapTaskDaemon:堆裁剪守护线程。用来执行裁剪堆的操作,也就是用来将那些空闲的堆内存归还给系统。