1.内存占用

对于智能手机而言,内存大小是固定的;因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多;或者说app的内存占用越小,在手机上运行就会越流畅。所以说,内存占用的大小,也是考量app性能的一个重要指标。

2.原理说明

对于一个app,我们可以关注它在3种状态下的内存占用情况:

空负荷————app已经在后台运行,但是用户没有使用;

中负荷————app在前台运行,用户进行了少量操作;

满负荷————用户持续频繁大量操作,app接近饱和状态运行。

然而,除了第一种情况,其它两种的主观性很强,不是很容易区分。正常产品测试的时候,只要验证后台运行(5~10分钟为宜)和用户持续频繁大量操作(10~15分钟为宜)这两种情况下就可以了。

这样一来,就变成了如何持续统计并记录app所占内存的问题。Procrank工具可以实现这个功能。

如上图所示,PID列显示的是对应app的进程号cmdline列显示的是对应app的包名(adb命令行下可以在"/data/data"目录下查看到)。接下来对其它的列进行详细说明。

通过procrank命令会从左到右依次列出Vss、Rss、Pss、Uss,并且对于同一个app进程而言,数值依次变小。

VSS————是单个进程全部可访问的地址空间,其大小包括可能还尚未在内存中驻留的部分。比如地址空间已经被 malloc

分配,但是还没有实际写入;对于确定单个进程实际内存使用大小, VSS 用处不大。

RSS————是单个进程实际占用的内存大小,RSS 易被误导的原因在于,

它包括了该进程所使用的所有共享库的全部内存大小。对于单个共享库,尽管无论多少个进程使用,实际该共享库只会被装入内存一次;因此,对于单个进程的内存使用大小,

RSS也不是一个精确的描述。

PSS————不同于RSS的是,PSS按比例包含了其所使用的共享库大小;例如,三个进程使用同一个占用30内存页的共享库。对于三个进程中的任何一个,PSS将只包括其中的10个内存页。PSS是一个非常有用的数字,因为系统中全部进程以整体的方式被统计,对于系统中的整体内存使用是一个很好的描述。如果一个进程被终止,其PSS中所使用的共享库大小将会重新按比例分配给剩下的并且仍在使用该共享库的进程。

USS————是单个进程的全部私有内存大小,亦即全部被该进程独占的内存大小;

USS是一个非常非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小,如果进程被终止,USS就是实际被返还给系统的内存大小。USS

是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。

3.测试方法

将已经被root的手机通过usb连接电脑;

进入procrank工具目录,通过记事本编辑"procrank_pssuss.bat"文件,按照如下图,设置procrank采样时间间隔,然后保存关闭。

双击执行procrank_pssuss.bat文件,然后尽量快的操作手机app,让目标app基本上处在满负荷持续运行10~15分钟;

停止procrank执行,收集的数据会被保存到执行日志会保存在procrank_pssuss.bat同级的目录下面,名为procrank_xxxx.log,其中xxxx为执行时的年月日时分秒;

然后通过excel打开对应的log文件,筛选出对应被测app的记录即可进行统计分析。

4.实例说明

通过Notepad++打开procrank工具生成的log文件;

通过搜索筛选出对应app的记录行;

将搜索结果单独拷贝到一个txt文本文件中;

正常情况下,如果进程的USS(或者PSS)值有波动,但是不会持续上升,在一定程度上说明app没有内存泄露的问题,可以取一段时间内的平均值作为内存占用的测试结果;

5.特别说明

可能的消除误差,这个过程最好重复5~10次,将测试结果取平均值;

正常情况下PSS(USS)的值应该维持在一个区间内波动,不会一直上升;如果该值存在一直上升的趋势,说明存在内存泄露的可能。

android app内存分析,Android手机App内存占用测试方法相关推荐

  1. android应用内存分析,Android应用程序内存分析-Memory Analysis for Android Applications

    Android应用程序内存分析 原文链接:http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html ...

  2. android版 智能家居 kit,Android/IOS版全能家电手机APP(智能家居APP)

    主要功能说明 1.照明控制 配合KOTI各系列的遥控开关(单火或零火开关),用户可以在手机APP上实现智能灯光控制,包括灯的开关.调光控制. 2.电动窗帘控制 配合KOTI各系列的窗帘开关,用户可以在 ...

  3. 解决android开发在大屏手机图片出现内存溢出

    解决android开发在大屏手机图片出现内存溢出 http://jingyan.baidu.com/article/ed2a5d1f3191d109f6be17e8.html

  4. 如何用天纵手机APP快速开发框架开发手机APP

    标题:如何用天纵手机APP快速开发框架开发手机APP 简介: 使用天纵软件快速开发平台开发手机APP不需要懂开发语言和进行编码工作,只需配置业务逻辑和界面样式即可.她颠覆了传统手机APP开发成本高.难 ...

  5. android 内存分析工具_Android Camera内存问题剖析

    本文通过一类 Android 机型上相机拍摄过程中的 native 内存 OOM 的问题展开,借助内存快照裁剪回捞和 Native 内存监控工具的赋能,来深入剖析此类问题. 背景 Raphael 是西 ...

  6. android 6gb和8gb区别,手机6GB内存和8GB内存的差距到底有多大?你可能被忽悠了!...

    原标题:手机6GB内存和8GB内存的差距到底有多大?你可能被忽悠了! 随着科技的发展,现在手机已经是人们生活中必需品,当然现在手机内存也是越来越大,4G运行内存已经是标配了,然而很多人都在好奇6GB运 ...

  7. android内存置换,安卓手机64GB内存如何更换内存

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 手机内存芯片是直接焊接在手机主板上的,一般普通用户是无法自行更改的.理论上,确实可以通过更换内存芯片的方法来改变手机内存容量,但是 ...

  8. 利用Android adb命令来测试手机App的耗电量

    使用Android adb命令实现wifi方式连接手机 因为要通过adb命令来监控手机的耗电量,所以建议通过wifi的方式来连接手机,而不是用usb线来连接手机设备.usb方式连接手机会自动给手机充电 ...

  9. android 内存分析 郭霖_android 内存泄漏(OOM)问题总结

    对于Java来说,就是new出来的Object 放在Heap上无法被GC回收 Paste_Image.png Context Context Context类本身是一个纯abstract类,它有两个具 ...

  10. 为什么android手机内存不够,安卓手机老是内存不足怎么解决

    在有些时候我们的安卓手机老是内存不足了,这该怎么解决呢?那么下面就由学习啦小编来给你们说说安卓手机老是内存不足的解决方法吧,希望可以帮到你们哦! 安卓手机老是内存不足的解决方法一: 手机内存,一般分为 ...

最新文章

  1. 案例二十、自动化运维-代码上线
  2. SVG 教程 (四)多边形,曲线,路径
  3. Collection的使用 对象 java
  4. SpringMVC 的总结
  5. [zabbix][问题解决]监控项 Received value [] is not suitable for value type [Numeric(float)]
  6. Knockout.js 初探
  7. sticky-footer布局
  8. 经典面试题之赋值操作
  9. SAP 货币类型和公司代码的货币设置
  10. C语言中位异或^简单讲解
  11. manchi翻译中文 mi_求这一段意大利文歌词中文翻译(MiManchi)?
  12. 如何使用PPT制作风靡朋友圈的九宫格照片,两种方法供你选择
  13. 敏捷迭代是什么意思_我认为“敏捷”的方向是第4部分:“敏捷”是什么意思?...
  14. 《超智游戏》:鬼影投手·棒球1号位
  15. 素数筛线性筛详细详解(个人总结思路超长版)
  16. 【GIS工具】谷歌卫星图下载工具之再聊坐标问题
  17. Kali中常用的代理工具以及使用
  18. http 1.php,php利用socket扩展写一个简单的单进程http服务1
  19. js获取服务器的时间
  20. 4个好用的图片去水印工具,图片去水印这样做就对了

热门文章

  1. LIN总线协议详解4(进度表)
  2. phpwind升级php7,【原创文章】升级phpwind为https
  3. python控制安捷伦频谱仪_频谱仪远程操作Python类
  4. java服务写在哪里_【Java学习笔记】如何写一个简单的Web Service
  5. UPS电源知识(开发板销售http://huarm.taobao.com/ )
  6. 【元胞自动机】基于matlab元胞自动机交通流模拟仿真【含Matlab源码 1252期】
  7. 超全汇总,常见的芯片封装大全-道合顺大数据infinigo
  8. 人生哲理枕边书——你应该知道的165个人生哲理
  9. 解读微信团队的七个价值观
  10. laravel身份证号码验证