补记: MAT(memory analyzer tool )是google 推荐的进行内存使用量分析的工具. 功能全面而强大!!!

首先看一下dumpsys有哪些功能:
dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。
dumpsys [Option]
meminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示所有的activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息

从我的G14中可以看到它从以下service获得所有的信息
Currently running services:
SurfaceFlinger
accessibility
account
activity
alarm
appwidget
assetredirection
audio
backup
battery
batteryinfo
bluetooth
bluetooth_a2dp
bluetooth_hid
bluetooth_network
clipboard
connectivity
content
cpuinfo
device_policy
devicestoragemonitor
diskstats
dropbox
entropy
hardware
input_method
iphonesubinfo
isms
location
media.audio_flinger
media.audio_policy
media.camera
media.player
meminfo
mount
netstat
network_management
notification
package

接下来,来看看Android系统是如何实现dumpsys的。
dumpsys的代码在mydroid/frameworks/base/cmds/dumpsys/dumpsys.cpp
所有的dump信息都是由重载了Binder中的dump函数的类来完成:
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
...
}
代码很简单,发现搜有dump的信息都是由defaultServiceManager(关于Android的ServiceManager的结构分析参见我之后的一篇文章)提供的由系统注册的所有service来提供信息。
以meminfo为例:
它是在mydroid/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数处被注册的
SrviceManager.addService("activity", m);
ServiceManager.addService("meminfo", new MemBinder(m));
...
MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(mydroid/frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo信息。

这其中其实牵涉到负责的Android的是如何管理Linux的进程,同时又是如何把Linux的进程管理起来提供各种信息给Java层使用。
总之,关键还是package的管理和它的活动周期的管理问题。值得深入理解。

更多相关文章

  1. android Bitmap的截取和缩放--转
  2. Android应用程序的调试
  3. Android:StatFs类 获取系统/sdcard存储空间信息
  4. 解决WebView加载Https无法显示的问题
  5. android一行显示多个多选框
  6. ListView中几个需要注意的属性
  7. 【Android(安卓)开发入门】android studio 控制台打印输出日志
  8. Android(安卓)对话框 (二)ProgressDialog
  9. Android学习笔记,Notification通知事件

随机推荐

  1. android SDK与ADT版本更新问题
  2. android String
  3. android 获取控件真实高度
  4. Android使用XPush配置极光推送
  5. android启动画面
  6. Android预定义样式
  7. 1.8 Android(安卓)SQLite数据库
  8. [置顶] Android(安卓)View系统学习文章汇
  9. Android(安卓)build system
  10. Android(安卓)Spinner