zoukankan      html  css  js  c++  java
  • Android 内存泄露测试数据处理--procrank,setprop,getprop(转)

    1.Android内存测试常用的几个概念。

    VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)
    RSS--Resident set size实际使用的物理内存(包含共享库占用的内存)
    PSS--Proportional set size 实际使用的物理内存(比例分配共享库占用的内存)
    USS--Unique Set size:进程独自占用的物理内存(不包含共享库占用的内存)
    一般来说内存占用大小如下规律:VSS>=RSS>=Pss>=USS

    2.Android procrank命令就提供了上面几个概念对应的数据---------并不是所有的Android系统都集成了procrank命令。

    对应内存泄露测试中,USS数据是一种最好显示进程内存泄露方式。原因:USS能够完全显示进程独占的物理内存。可以正常显示正在运行的独立进程的内存消耗。当进程被杀死,USS 显示的内存消耗可以真实的反馈到系统。

     对应于Android API:

             1.final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);  
             2.Android.os.Debug.MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(new int[]{android.os.Process.myPid()}); 

              其中MemoryInfo类提供了API接口帮助我们获取内存数据

              USS: getTotalPrivateDirty()

              RSS: getTotalSharedDirty()

              PSS: getTotalPss()

      procrank命令:    # procrank   
          procrank    
           PID      Vss      Rss      Pss      Uss cmdline    
          481   31536K   30936K   14337K    9956K system_server    
          475   26128K   26128K   10046K    5992K zygote    
          526   25108K   25108K    9225K    5384K android.process.acore    
          523   22388K   22388K    7166K    3432K com.android.phone    
           574   21632K   21632K    6109K    2468K com.android.settings    
          521   20816K   20816K    6050K    2776K jp.co.omronsoft.openwnn    
          474    3304K    3304K    1097K     624K /system/bin/mediaserver    
            37     304K     304K     289K     288K /sbin/adbd    
            29     720K     720K     261K     212K /system/bin/rild    
          601     412K     412K     225K     216K procrank    
             1     204K     204K     185K     184K /init    
           35     388K     388K     182K     172K /system/bin/qemud    
          284     384K     384K     160K     148K top    
            27     376K     376K     148K     136K /system/bin/vold

       导出的数据可以用Exel表通过进程名进行过滤,然后插入相对于进程的USS折线图。可以明显的查看是否存在内存泄露。

    3.getprop命令:

      #getprop

    4.setprop key value

    例子:设置状态栏中功能不可用:setprop persist.gn.monkeytest.status 1=================该属性不是每一个Android系统都有的。

                设置成功后重启手机,重启后才设置成功。设置目的是防止monkey测试过程中将状态栏拉下后断开USB调试。

  • 相关阅读:
    两个链表的第一个公共结点
    数组中的逆序对
    C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
    第一个只出现一次的字符
    机器学习算法速览表
    丑数
    设计模式---行为型设计模式【策略模式】
    设计模式---行为型设计模式【备忘录模式】
    设计模式----创建型设计模式【单例模式】
    设计模式----创建型设计模式【简单工厂、工厂方法、抽象工厂】
  • 原文地址:https://www.cnblogs.com/qq78292959/p/4392431.html
Copyright © 2011-2022 走看看