• android性能测试工具之dumpsys


    补记: 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的管理和它的活动周期的管理问题。值得深入理解。

    http://blog.csdn.net/melody_lu123/article/details/6777413

  • 相关阅读:
    Win7 安装 IIS 7.5 及部署 .NET 程序到 IIS 的内容杂记
    乐嘉,你快回来
    AMD将要嫁他人?
    高精度运算(运算符重载)
    魔数卡牌
    C语言"#","#@"和"##"在宏定义中的使用技巧
    CentOS7下安装FTP服务
    Linux下FTP的安装和登陆
    怎么让FOXMAIL关了以后在右下角自动收取邮件
    在CentOS7上安装ftp服务器用于保存服务端上传的图片。
  • 原文地址:https://www.cnblogs.com/eustoma/p/2473377.html
Copyright © 2020-2023  润新知