android应用程序线程的监控

标签: android 应用程序 线程 | 发表时间:2011-12-21 16:06 | 作者:gzh0222
出处:http://blog.csdn.net

今天,一个朋友向我问起一个问题,说既然咱们是做性能的,我们就不能仅仅局限在服务器端,随着现在android手机硬件的发展,现在手机端的应用也随之强大起来,当然android手机并不是所以的硬件都是那么强大,另外测试人员都喜欢性能高端的手机进行测试,在一些低端的手机上都是简单测试,所以会导致一些潜在的问题,所以针对android应用程序的性能测试显得很有必要,既然她都提出来了,我又怎能推辞,既然作为群主就要为群里的每个成员负责。所以就开始研究起来,经过半天的模式总用有点启发,下面就简单介绍一个简单的线程监控:

DDMS是一款Google* 提供的应用,可作为独立的工具运行,也可通过ADT Eclipse* 插件集成到Eclipse* 中。它提供了强大的特性集合,能帮助您快速了解应用的运行状况。线程更新DDMS中的线程监控和评测浏览对于管理大量线程的应用很有用。要启用,点击 Update Threads(更新线程)图标即可开始。



一些性能指标都很清楚的现实在我们的面前了,当然仅仅到此根本无法找出问题,就是程序有问题纯正我们也看不出啊,因为我们对这些指标不明白是什么意思啊,下面就给一一介绍给大家:

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等。


作者:gzh0222 发表于2011-12-21 16:06:41 原文链接
阅读:7 评论:0 查看评论

相关 [android 应用程序 线程] 推荐:

android应用程序线程的监控

- - CSDN博客推荐文章
所以就开始研究起来,经过半天的模式总用有点启发,下面就简单介绍一个简单的线程监控:. DDMS是一款Google* 提供的应用,可作为独立的工具运行,也可通过ADT Eclipse* 插件集成到Eclipse* 中. 它提供了强大的特性集合,能帮助您快速了解应用的运行状况. 线程更新DDMS中的线程监控和评测浏览对于管理大量线程的应用很有用.

Android 应用程序

- - CSDN博客推荐文章
Android 应用程序由四个模块构造而成:Activity、Intent 、Content Provider 、Service. 下面简单介绍一下如下模块的含义:. 1、Activity  "活动". 一个Activity就是单独的屏幕,每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口并对事件作出响应.

Android 一个应用程序调用另一个应用程序

- - CSDN博客推荐文章
实现行业应用调用我们可以Get到哪些技能. * Activity的singleTask的启动模式 * 界面跳转的基本实现 * 前台Service的基本介绍和实现 * SharedPreference的简单用法. 在XHL应用程序中去调用MPos应用程序,借助MPos的一些界面完成特殊的功能. (1)创建名为XHL的应用程序.

Eclipse开发Android应用程序入门

- Bingnan - 酷壳 - CoolShell.cn
原文出处:http://www.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/. 如今的移动设备应用程序开发充满着让人振奋的东西. 功能强大的硬件支持,平板电脑,多样的软件平台(塞班 OS,iOS,WebOS,Windows Phone 7…),移动设备开发者前景充满了机会和挑战.

10款在Google labs诞生的Android应用程序

- HUan - cnBeta.COM
Google研究部门的高级副总裁Bill Coughran通过Google博客表示公司将关闭Google labs,因为Google打算集中资源开发重点项目. Google计划先结束所有实验,然后着重开发那些已成形的产品. 这并不意味着Google停止了一切创新活动,Google员工依旧会花时间进行“宠物计划”(就是工程师每周有一天时间将自己最疯狂的想法付诸实践),同时也会继续开发新产品,但是会终止所有实验室项目.

【外刊IT评论】如何发布你的Android应用程序

- 旺旺 - 外刊IT评论网
本文是从 Some Things To Know About Publishing Android Apps 这篇文章翻译而来. 到目前为止,在Android交易市场(Android Market)里,已经有我的2个应用程序了,所以,我想写出一点关于Android应用程序发布过程的东西,用来告诉那些想发布自己的应用程序的朋友们,在发布过程中会遇到哪些的事情.

Android应用程序需不需要手动退出?

- Jackie - 互联网的那点事
不止一次,也不止一个人问过这个问题. 我们不妨从了解这个系统对于应用程序管理的一些内部机制开始说明原因. 对于Android系统而言,包含“进程”和“服务”. “进程”有正在运行的,也有刚刚离开在后台缓存的. “服务”是一个无界面、长时间运行的应用功能,并且不会轻易被终止. 我们知道,在Android中可以快速通过主页键(home)或者使用返回键(←)逐步离开应用程序.

Android应用程序是否需要手动退出

- Tomy - Tech2IPO
不止一次,也不止一个人问过这个问题. 我们不妨从了解这个系统对于应用程序管理的一些内部机制开始说明原因. 对于Android系统而言,包含“进程”和“服务”. “进程”有正在运行的,也有刚刚离开在后台缓存的. “服务”是一个无界面、长时间运行的应用功能,并且不会轻易被终止. 我们知道,在Android中可以快速通过主页键(home)或者使用返回键(←)逐步离开应用程序.

Android应用程序需不需要手动退出?

- jk - 网易用户体验设计中心博客
不止一次,也不止一个人问过这个问题. 我们不妨从了解这个系统对于应用程序管理的一些内部机制开始说明原因. 对于Android系统而言,包含”进程”和”服务”. ”进程”有正在运行的,也有刚刚离开在后台缓存的. ”服务”是一个无界面、长时间运行的应用功能,并且不会轻易被终止. 我们知道,在Android中可以快速通过主页键(home)或者使用返回键(←)逐步离开应用程序.