eclipse ddms怎么查看应用的线程

 我来答
匿名用户
2014-01-29
展开全部


用Eclipse DDMS可以看到下面的线程:

Signal Catcher
Heap Worker
main thread
binder thread #1
binder thread #2
那这些线程都是用来做什么的呢?

在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专有

全明星演技分析
2015-05-29 · 人没有梦想和咸鱼有什么区别
全明星演技分析
采纳数:3046 获赞数:11774

向TA提问 私信TA
展开全部
实际应用中有可能出现如下场景,在Activity 中,新建后台线程(Thread,或者 AsyncTask) 处理网络请求或者其他耗时的工作,但是 主界面出现卡顿现象,ANR 等。有可能是主线程被阻塞。我们可以利用DDMS 来分析主线程和其他工作线程是否出现阻塞,并找出 阻塞的原因。
   利用DDMS 分析线程主要有如下几个步骤:
   1.将手机连接到 电脑,打开Eclipse 的DDMS 视图。
   2.在Devices视图中选择需要调试的应用程序,如 Contacts.
   3.手机中启动应用程序Contacts
   4.在Devices 视图的工具栏中选择 Update Threads,在右边视图中选择 Threads 选项。这个选项中会记录应用中所有的线程的状态,线程名称为 main的线程是主线程。
   5.在应用程序中进行让UI 出现卡顿的操作,在右边的视图中查看 main 线程,如果线程的状态显示 monitor,这表示 main 线程因为 请求同步锁而处于阻塞状态。点击Refresh 按钮查看线程是因为什么原因而阻塞。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式