• 【转】android ddms中查看线程释疑


    原文网址:http://www.mobiletrain.org/lecture/doc/android/2011-05/457.html

    大家都用过ddm,如果你用ddms查看一个程序的所有线程,你会发现
    Signal Catcher
    Heap Worker
    main thread
    binder thread #1
    binder thread #2
    那这些线程都是用来做什么的呢?
    我来给大家介绍一下android中的线程

    在Android系统中,Java层和c++/c层都可以创建线程。不过Java层创建的线程最终都由c++/c层来实现。使用ddms这个工具可以查看虚拟机实例进程(除zygote本身和由native code创建的进程,比如vold外)所包含的线程大致信息。比如线程名字,id号,状态,user time和system time等。
    大家可以看到一般一个虚拟机实例进程都包含有如下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等。

  • 相关阅读:
    Object的create、assign、getPrototypeOf与拷贝
    vue中使用axios最详细教程
    COJ1249(竞争性酶抑制剂和同工酶)
    COJ1127(芝麻开门)
    COJ1219(建食堂)
    COJ1236(删数游戏)
    COJ1247(有髓鞘神经纤维动作电位传导)
    POJ1159(Palindrome)
    POJ1080(Human Gene Functions)
    Uva10034(Freckles)
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4894732.html
Copyright © 2020-2023  润新知