大家可以看到一般一个虚拟机实例进程都包含有如下7个通用的线程,下面大致讲一下这些线程的作用和创建流程。 1. main 这个就是主线程了。具体流程待细述。 2. HeapWorker 一个异步的工作线程,处理那些需要在单独线程里面做的避免同步问题的堆操作。其源代码在dalvik/vm/alloc/HeapWorker.*部分。 3. Signal Catcher 这个线程是用来捕获linux信号和做一些后续处理的。比如说,当一个SIGQUIT (Ctrl-\)信号到达后,这个线程就会挂起虚拟机,并且将所有线程的状态信息输出到log。其源代码在dalvik/vm/SignalCatcher.*部分。 4. JDWP 这个线程是用来实现Java Debug Wire Protocol的。如果命令行调试器的参数为"suspend=y",这样会暂停虚拟机。这个估计和eclipse的调试和ddms等调试工具相关。其源代码在dalvik/vm/jdwp/*部分。 5. Stdio Converter 这个线程从标准输出和标准错误输出读取信息并将它们转换为log信息。其源代码在dalvik/vm/StdioConverter.*部分。 6. Compiler Android's Jit独立于目标平台的部分。其源代码在dalvik/vm/compiler/Compiler.*和dalvik/vm/interp/Jit.*等部分。 7. Binder Thread #%d 使用binder进行通讯时用到的线程。其源代码在frameworks/base/libs/binder/*等部分。 以下的线程属于system_server和应用程序专有线程,视具体应用的需求而定。 8. system_server专有 android.server.ServerThread ActivityManager ProcessStats PackageManager FileObserver AccountManagerService SyncHandlerThread UEventObserver PowerManagerService AlarmManager WindowManager InputDeviceReader WindowManagerPolicy InputDispatcher ConnectivityThread WifiService WifiWatchdogThread LocationManagerService AudioService GpsEventThread GpsNetworkThread android.hardware.SensorManager$SensorThread watchdog Wallpaper com.android.server.MountListener 9. misc 其他部分线程由java层的api提供,Thread等。 |
Android DDMS查看Threads情况
最新推荐文章于 2021-02-13 18:44:57 发布