android性能测试工具之dumpsys
2610 点击·0 回帖
![]() | ![]() | |
![]() | 记: 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的管理和它的活动周期的管理问题。值得深入理解。 摘自 Melody_lu123 | |
![]() | ![]() |