Android内存测试杂谈

本文章转载于搜狗测试

当软件实现了新功能后,准备发布版本前,必须进行性能测试以确定没有性能问题,内存使用情况便是其中必须要测试的性能之一。由于内存组成的复杂性,并没有简单通用的方法能够发现所有的内存问题。有时候因为问题比较明显,就真的发现了问题,但是对于较为成熟的软件,并不是那么容易发现内存问题。现在从内存测试流程、内存测试方法、内存占用的评判建议三个方面总结如下,希望能提升内存测试的有效性。

内存测试流程

以V8.8泛灵犀功能为例,介绍下这个流程中的要点:

1)代码:保证进行泛灵犀内存测试的版本是纯净版,没有附加多余的Log和调试用组件

2)测试场景:V8.8泛灵犀功能是当前新开发的功能,只需要对该功能进行性能测试,因此测试场景主要针对V8.8泛灵犀功能组织,包括该功能的开启前、运行、结束后等测试点,即在输入框中输入要搜索的文字→点击四叶草搜索→结果左右滑动→收起搜索结果;另一类是整体性能,考察应用的常见场景,在综合使用情况下的性能指标,测试场景应当包括启动后待机、切换到后台、执行主要功能以及反复执行各功能。在两类场景中,重点关注:

①包含了图片显示的界面;

②网络传输大量数据;

③需要缓存数据的场景

3)场景转换成用例:选取了测试场景之后,针对内存测试的特点设计用例,通过①与V8.7版本泛灵犀功能的内存变化作对比;②利用UIAutomator将测试场景转化为脚本,长时间运行泛灵犀功能,比较操作前后内存的变化来评估V8.8泛灵犀的内存

4)执行:将采集到的数据以图形的形式展现,观察内存的波动

5)分析:分析内存时重点关注如下几个字段:

①Native/Dalvik 的 Heap ,分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,

则代表程序可能出现了内存泄漏;

②Total 的 PSS 信息,代表应用真正占据的内存大小,通过它可以判别手机中哪些程序占内存比较大了。

其他评判方法可参考第三小节:内存占用评判建议

内存测试方法

1)Android Studio自带内存检测功能

可以方便地看出GC(垃圾回收)情况和明显的内存趋势。如果存在明显的内存泄漏,就会表现为随着功能的反复使用,内存值不断升高,即使出现GC也没法降下来。测试时,重点关注两点:①退出某个页面后,内存是否回落;②进行某个操作后,内存增长的过快,需要反复操作进行确认。

2)dumpsys meminfo

参数含义:

Naitve Heap Size:从mallinfo usmblks获得,代表最大总共分配空间

Native Heap Alloc:从mallinfo uorblks获得,总共分配空间

Native Heap Free:从mallinfo fordblks获得,代表总共剩余空间

Native Heap Size约等于Native Heap Alloc + Native HeapFree

Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。

Dalvik Heap Alloc: Runtime totalMemory()-freeMemory(),Dalvik Heap分配的内存大小。

Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。

Dalvik Heap Size约等于Dalvik  HeapAlloc +Dalvik  Heap Free

3)使用ActivityManager.getMemoryInfo()方法获得内存信息

搜狗哆啦A梦中的性能监控工具就是通过该方法获取应用的内存和cpu,相关代码如下:

性能监控工具使用步骤:

①下载哆啦A梦工具并安装http://duola.sogou.com/

②切换到设置页面,点击“被测应用设置”,在应用列表中选择要监控的应用程序,设为被测应用;

③切换到工具页面,点击+按钮;

④在通用工具里找到性能监控工具,点击“添加”;

⑤点击性能监控,在如下页面中可以设置数据采样频率,还可以查看内存变化趋势/查看CPU占用变化趋势/查看流量耗用情况;

⑥开启悬浮窗,可以实时看到内存的变化/CPU的变化/应用流量;

⑦测试完成后,点击“停止测试”,性能测试数据保存在sdcard/DoraemonBox/PerformanceTest下,可以从里面获取内存信息。

内存占用评判建议

最初通过哆啦A梦的性能监控工具进行性能评测时,得出的结果不知道内存cpu波动是否在预期之内,不懂得如何评估。经过了解,可以从以下几个方面考虑:

1)首先与有该功能的以往版本和竞品做对比,得出内存的差值

比如搜狗输入法每个版本都会做内存占用评测,对比搜狗输入法与以往版本

及竞争对手在内存上的消耗量,通过内存的差值可以较为直观地判断出该版本的内存占用情况。下图是搜狗输入法8.5版本与之前8.4版本和竞品的内存消耗对比

2)若之前版本和竞品都无该功能,可将应用的基本功能消耗的内存作为参考

比如8.5泛灵犀,这是一个全新的功能,且竞品也没有该功能,将随机打字消耗的内存作为参考,比较泛灵犀的内存相对于正常的打字是否有较大的增长。下图是搜狗输入法8.5泛灵犀主动情况下与随机打字的内存消耗对比

3)内存有无泄漏

判断内存是否泄漏的方法是:①在测试过程中是否存在因为内存不足导致的应用crash;②内存是否存在持续上涨的情况。针对上图泛灵犀主动情况下的内存占用,可从内存有无泄漏角度分析:泛灵犀主动情况下对图片和动图进行操作时,内存增长30%-40%,但退出图片和动图后内存回降,并且在测试过程中不存在因为内存不足导致的应用崩溃,测试过程中没有内存泄漏,经沟通符合预期。

4)内存峰值是否在单个应用所允许的最大值之内

最大值可参考:①手机硬件配置;②系统所允许的最大值;③相比类似应用的峰值。在手机的设置→用用程序管理器→应用程序信息中可以看到应用所占用的手机内存大小。若某个功能的内存峰值小于该应用所占内存,基本是符合预期的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,365评论 25 707
  • 一.操作系统相关基础知识 1.物理内存、虚拟内存、逻辑地址与交换空间 物理内存(RAM):加载到内存地址寄存器中的...
    Geeks_Liu阅读 9,119评论 6 30
  • 1、内存了解 在Android App的性能优化的各个部分里,内存方面的知识较多且不易理解,内存的问题绝对是最令人...
    萧竹阅读 8,748评论 1 12
  • 今天回顾了下这个直播 优化TableView滑动体验,其中前面讲的影响性能的点的印象比较深刻,特此记录。 一、较多...
    天空中的球阅读 853评论 2 10
  • 感觉还是不错的 也没有想象的那么累 坚持下去 不过今年事情还是比较多的 希望都能够一件一件的解决吧 重要是得拿到毕...
    龙迹MainiK阅读 166评论 0 1