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调试。

Android 内存泄露测试数据处理--procrank,setprop,getprop(转)的更多相关文章

  1. Android内存泄露测试

    Android性能测试过程中的一些常用命令: CPU: adb shell top -n | grep "+PackageName 内存: adb shell dumpsys meminfo ...

  2. android 内存泄露测试

    Android 程序由java语言编写,android的内存管理与java相似,通过new为对象分配内存,所有对象在java堆内分配空间,对象回收有个垃圾回收器来完成.GC就是垃圾收集的意思(Gaba ...

  3. 移动端测试===Android内存泄露和GC机制(转)

    本文转自:https://www.testwo.com/article/1153 1.前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑.比如小编所测项目,更换 ...

  4. (转)专项:Android 内存泄露实践分析

    今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ;  原文链接:https://teste ...

  5. Android内存泄露调试

    Android 内存泄漏调试 一.概述 如果我们编写的代码当中有太多的对内存使用不当的地方,难免会使得我们的设备运行缓慢,甚至是死机.为了能够使得 Android 应用程序安全且快速的运行, Andr ...

  6. android内存泄露调试,Heap,MAT

    三.内存监测工具 DDMS --> Heap 无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中 ...

  7. android 内存泄露之jni local reference table overflow (max=512)

    在android项目中要实现一个需求 为了性能的要求只能用c代码来实现功能. 这样就牺牲了java跨平台性. 通过加载.so的方式,把用c实现的模块集成到app中. android提供jni层,作为一 ...

  8. 【android内存泄露】 WebView篇

    在咱的博客园app里,新闻的内容使用WebView展示的.在测试中,咱重复进入.退出某个新闻10多次,观察到 Objects一直在不断增长,反复触发GC,但是一直回收不了,占用的内存越来越高,于是警觉 ...

  9. Android内存泄露自动检测神器LeakCanary

    经典的面试题: a.怎样在coding过程中避免内存泄露? b.怎样检测内存泄露? 这两个问题我想大部分Android 职位面试时都会被问到吧. 怎样避免就不赘述了,网上很多答案. 工具呢,当然也有很 ...

随机推荐

  1. [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码

    MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...

  2. 20155339 2016-2017-2 《Java程序设计》第6周学习总结

    20155339 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 串流设计 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 ...

  3. linux的lemon安装示范

    \(First\): 1. 准备好 lemon原文件 2. 解压压缩包(名字必须是lemon) 第二步:找到readme.md这个文件 第三步:了解一下安装指南 第四步:打开终端 注意:源代码目录就是 ...

  4. 【算法】Huffman编码(数据结构+算法)

    1.描述 Huffman编码,将字符串利用C++编码输出该字符串的Huffman编码. Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领 ...

  5. MQTT--入门【转】

    转自:https://blog.csdn.net/qq_28877125/article/details/78325003 一.简述  MQTT(Message Queuing Telemetry T ...

  6. Spring bean 配置

    1.传统的创建对象的方式:JedisMall tardition=new JedisMall(); 这样是在程序运行时创建,表示当前模块已经不知不觉和new出的对象耦合了,而我们通常都是更高层次的抽象 ...

  7. 计算机底层知识拾遗(九)深入理解内存映射mmap

    内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点. 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现 ...

  8. 安装Python3.6.4后,在使用numpy时报错RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88

    原因: 因为安装numpy用的是 pip来安装的 pypi官方对于numpy的库已经升级了,但是升级后的版本与其他的库不匹配 所以报错 解决: 先把已经安装的numpy卸载: pip uninstal ...

  9. Ibatis.Net 输出SQL语句学习(七)

    一.IBatis.net输出SQL语句 输出IBatis.net生成的SQL语句,能够方便调试. 在MapperHelper类中添加GetSql方法: /// <summary> /// ...

  10. 排序算法的JS实现

    排序算法是基础算法,虽然关键在于算法的思想而不是语言,但还是决定借助算法可视化工具结合自己常用的语言实现一下 1.冒泡排序 基本思路:依次比较两两相邻的两个数,前面数比后面数小,不变.前面数比后面数大 ...