android eclipse ddms 查看线程,android ddms中查看线程释疑
android ddms中查看线程释疑
时间:2011-05-06 10:10:46 来源:DevDiv移动开发社区 作者:Vincent
大家都用过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等。
android eclipse ddms 查看线程,android ddms中查看线程释疑相关推荐
- python 在主线程开线程_Python开启线程,在函数中开线程的实例
逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...
- python可以开多少线程_Python开启线程,在函数中开线程的实例
逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...
- android+eclipse工程,#Cocos2d+lua#android+Eclipse工程编译设置
用Elicpse编译cocos2d+lua的工程几点注意点记录: 1.设置工程属性Windows->Preferences->NDK目录 2.右键Android Tools->Add ...
- linux 查看硬盘的uuid_Ubuntu中查看硬盘分区UUID的方法(所有Linux目录的解释)
在Ubuntu中UUID的两种获取方法,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样. 在终端中输入下面的命令就可心查看到分区UUID了. 命令1. sudo blkid 命令2. ...
- linux查看java进程_linux中查看java进程
linux中查看java进程 查看进程可以使用 ps -ef|grep 'java -jar' ps -ef|grep java [root@vm-linux-x86 ~]# ps -ef|grep ...
- java多线程 线程安全_Java中的线程安全
java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...
- 操作系统中的进程与线程和java中的线程
简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是 ...
- java线程和操作系统线程_操作系统中的线程
java线程和操作系统线程 线程数 (Threads) A thread is a unit of CPU utilization, which comprises the following par ...
- java线程和内核线程的,Java中内核线程理论及实例详解
1.概念 内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行.内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口 ...
- java 守护线程 作用_java中守护线程的一些概念和用法
网上的资料中,守护线程的功能一般都是"只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用 ...
最新文章
- 耗时3天,上亿数据如何做到秒级查询?
- 脑网络的可塑性——随时都在发生
- IIS7.5部署ASP.NET失败
- ionic2 html 转义,ionic2 基于ngx-translate实现多语言切换,翻译
- centos php 开启libgdgd_CentOS6.6下yum安装PHP的gd库失败?-问答-阿里云开发者社区-阿里云...
- 读书和不读书的女人之间,一眼就能看得出来差别
- 淘宝API开发系列--开篇概述
- log4net使用注意
- 为什么Python是数据科学领域最受欢迎的语言之一?
- python基础代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)
- Nexon由Xsolla全球支付服务
- SQL:PostgreSQL+PostGIS的安装以及C# GDAL开发环境配置
- GNS3下载安装和使用、本地主机虚拟网卡消失解决方案以及环回网卡添加与测试
- java1.8 ojdbc14.jar_ojdbc14_g.jar与ojdbc14.jar区别
- GameofMir__游戏Mod制作【1】
- Win11亮度无法调节解决方法(在卸载驱动,关闭自适应亮度和修改注册表都行不通的情况下)
- 一文带你读懂点击劫持详解+实验
- python fun函数、求4x4整型数组的主对角线元素的和_C语言编程求一个4x4数组左下三角 包括主对角线元素的和...
- QQ空间点赞Jquery代码
- 解决微信浏览器缓存问题
热门文章
- 卡巴斯基蓝屏问题处理
- PLC十字路口交通灯设计
- 人人网主页登录_人人网回归了!原来的账号还能登录,你的“黑历史”都在呢...
- openproject_OpenProject入门
- 使用Python编写一个QQ聊天机器人
- 如何在计算机快速删掉快捷方式,电脑桌面上的网页快捷方式怎么删除?怎么在桌面便签上快速删除网页快捷方式...
- 只需45秒,用Python给故宫画一组雪景手绘图
- 计算机软件429修复工具,运行时错误 429,ActiveX部件不能创建对象的解决方法小结...
- 16进制与二进制之间的转换
- Hook技术(1):Hook技术简介