android内存测试方法,Android内存测试方法.doc

Android内存测试方法

标准:

1.Android手持设备最大进程内存阀值的50%

2.不允许出现内存泄漏

3.OOM要有异常处理机制

常用工具:

1. DDMS

2. MAT

3. Magnifier(开发中暂未落地)

执行方法:

50%内存阀值监控

查看法

【级别:必须执行】

使用这个步骤基本上就能帮助测试,发现和监控50%进程内存阀值红线的,触及情况。

【方法】

使用DDMS的设备进程管理器(只有调试版apk所产生的进程可以显示在这个列表中,开发版的os会显示所有进程,不管是否是调试版apk)

对列表中选中进程,做update heap操作,就可以在heap标签下看到当前进程所占内存

如果列表是空,看不到这些数据,请点击【cause GC】按钮

可以注重看Allocated字段,和data object字段

Allocated:当前占用内存大小(如果此项超过最大进程内存阀值的50%,点击【cause GC】无法降低,就触及合入红线了)

data object:进程中实例个数

开发分析法

【级别:建议开发执行】

执行这个步骤可以定量,定性内存问题发生的原因,机制。但使用过程比较繁琐,需要多加训练,建议开启培训机制

【方法】

排列法:使用MAT的统计视图排列功能,排列出内存占用最大的对象,然后逐个分析引用关系。

对比法:使用MAT统计视图的对比功能,对比两个hprof文件,发现增量部分,然后通过统治者视图分析引用关系。(可以参看/group/MTC/articles/show/153827木糖醇的【内存杂谈】)

代码静态分析法:直接命中代码,由开发主导,看代码画出对象向量图,分析引用关系。

内存泄漏

使用【查看法】,反复使用相同功能,如果【data object】持续上升,点击【cause GC】也无法回降,就是内存泄漏了,这个是不允许的,触发了合入标准红线

OOM异常处理机制

OutOfMemoryError的异常处理机制,应包括

1. 释放cache内存(比如使用list,vector等所做的缓存,执行clear操作)

2. 调用系统GC方法

3. 打印log,包括模块名称,异常出现的方法名称

4. 重新执行异常前操作,如果依然出现内存不足,直接crash,使用QQ的异常上报机制,上报异常。

案例:

手Q切换帐号内存泄漏

使用【查看法】,发现切换帐号过程中【data object】持续上升,点击【cause GC】也无法回降,用MAT抓取dump,分析结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值