前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯TMQ在线沙龙|android内存性能测试

腾讯TMQ在线沙龙|android内存性能测试

作者头像
腾讯移动品质中心TMQ
发布2018-02-06 16:31:29
1.6K0
发布2018-02-06 16:31:29
举报

Android内存性能测试

活动时间:2016年10月31日 QQ群视频交流

活动介绍:TMQ在线沙龙第十一期分享

本次分享的主题是老司机给大家分享android内存性能测试。

共有104位测试小伙伴报名参加活动,在线观看视频人数52人~想知道活动分享了啥吗?往下看吧!

活动嘉宾

嘉宾简介

张志伟,腾讯高级测试工程师,目前负责手机管家的性能测试及优化。有多年的前后台性能测试经验。

分享主题

  • Andriod内存问题
  • 用数据说话
  • 多进程及共享内存
  • 内存碎片地图自动化测试实战
  • dalvik other和mmaps

问答环节

1、提问:内存测试是否能精准的定位到出现问题的方法,该如何做?

答:使用MAT等工具通常能定位到出现问题的类,然后结合代码分析。查找代码中使用到这些类的地方,看这些类是在什么地方被创建的,就能够找到出现问题的方法。

2、提问:如果测试内容是某个SDK,该如何着手设计?

答:1).通常是单独写一个测试应用,以排除其他可能的干扰项。调用sdk模拟实现一些功能并进行测试,得到性能数据。

2).但要注意的是测试应用不能完全体现合入应用后的表现。

3).比如在测试应用里,SDK调用某些API消耗了内存的情况比较明显,但在真正的应用里已经使用过这些API,那SDK消耗的内存就不明显了。

3、提问:长时间运行出现的内存问题该如何复现和定位?

答:1).可以使用APT或脚本进行长时间的记录,观察内存曲线的图像,也许能发现问题特征。

2).还可以定期dump内存,然后进行比较,看新增了哪些对象。

4、提问:请问我们只需要关注Dalvik的就可以了吗? Native的内存要不要关注?

答:通常应用的代码都是在dalvik部分执行的,除非调用了jni库。一般我们可以只关注native heap整体,当发现异常后再使用valgrind等工具详细分析。

5、提问:我们是应该用PSS来衡量应用内存?还是USS来衡量?或者说,在什么情况下,用PSS准确一些,还是USS准确一些?

答:PSS更加准确一些,系统统计内存时也是按PSS算的。对于多进程架构的应用,USS的值会出现失真。

6、提问:请问我们想将内存等性能测试应用于monkey自动化测试中,执行monkey压测时候,能收集到手机内存变化数据,让我们在monkey运行完成之后画出相应的内存变化曲线。请问有没有什么好的工具能支持呢

答:APT可以支持画图。http://opensource.tencent.com/apt.html

7、提问:因为目前测试过程中我们公司遇到一个因为测试版本无debug权限只有在问题发现后才能回头来打开debug权限,请问有什么方案可以实时监控住所有对象的生成与销毁并记录?

答:实时监控目前没有很好的方案。debug权限可以通过使用userdebug模式的手机获得,并可以用allocation tracker短时间监控对象的生成。

8、提问:针对使用小对象过多,导致的内存碎片占用多的问题,一般有哪些解决方案,优化后有没有哪些比较容易出现的引入问题?

答:内存碎片产生的原因之一是有大量的临时对象,可以用按需生成的方案,就不容易产生。也可以考虑用临时进程的方案,将这类操作放到临时进程中,再将结果传回原进程保存。

9、提问:系统api部分,性能测试报告中是不是有这类的消耗分析?如果有的话这部分一般是否提出优化建议?是否需要详细到针对各个类的消耗做分析?

答:很难独立列出系统api消耗的内存,常见情况是比较两个版本时发现问题,并追查到使用了新的api。

10、提问:不同系统,使用了不同的虚拟机 dalvik和art分析上有没啥区别呢?

答:dalvik和art各类内存的分布不同,各项差别较大。不能将两个版本

11、提问:dumpsys meminfo 里的unknown项有没啥好的分析方法呢?

答:unknown项主要是虚拟机里的一些分配内存的操作没有打标签,可以换更高版本的其他手机,通常从4.4.4起unknown项就会少很多。

12、提问:内存碎片产生的场景包括哪些, 有效的测试工具或者原理可以介绍一下吗?

答: 内存碎片产生的原因是:

1). 需要创建一批较小并且生命周期较长的对象。

2). 创建这批对象是会产生大量的临时对象,在创建后释放。

3). 虚拟机没有内存压缩整理的功能。

更详细的内容请见TMQ的这篇文章:http://tmq.qq.com/2015/12/%e6%89%8b%e6%9c%ba%e7%ae%a1%e5%ae%b6%e5%86%85%e5%ad%98%e4%bc%98%e5%8c%96-2/

暂时还没有集成的工具,是通过MAT和脚本分析的。

13、提问:常见的内存泄漏场景能举例说下吗?

答: TMQ有很好的文章详细介绍了内存泄漏相关的问题,建议去看下。

14、提问:通过自动化脚本获取数据后,如何去分析和定位具体的问题

答: 分析数据,根据出现问题的不同类型内存和现象,针对性的进行更进一步的测试。

15、提问:android 内存的性能分析,一般在项目的什么阶段开展比较合适

答: 性能测试分析的时间成本可能较高,一般是在集成阶段。如果能够自动化采集性能数据,可以提前一些。

16、提问:每个程序都会存在内存泄露,一般在测试那个阶段易被发现 ,如何去避免内存泄露

答: TMQ有很好的文章详细介绍了内存泄漏相关的问题,建议去看下。

17、提问:测试内存泄露怎么测试的

答: TMQ有很好的文章详细介绍了内存泄漏相关的问题,建议去看下。

18、提问:apt的使用好像没介绍

答: 时间关系,这篇文章讲的比较详细。

http://www.csdn.net/article/1970-01-01/2819366

19、问题: 问题+手机在运行时,后台会自己调用多个程序,怎么排除测试数据中的来自第三方的干扰?

答: 内存测试一般不存在这个问题,所有取内存数据的行为都是针对指定进程的,不会取到其他应用进程的数据。

获奖名单

ID:去哪儿测试(125****23)

ID:球盲--YY--测试(119****03)

ID:jessic_boya--测试(854****91)

恭喜以上三位同学获得TMQ本次沙龙活动听众奖;

本次奖品是由TMQ 官方出品《移动App性能评测与优化》新书哦

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯移动品质中心TMQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档