Android 性能测试

来源:互联网 发布:数据库系统发展历史 编辑:程序博客网 时间:2024/05/22 15:50

一、UI性能问题

方法1:肉眼观察

1、进入设置——开发者选项,打开“Profile GPU rendering” ,选择“On screen as bars”

     反复操作要评估的页面,观察柱状图,如果高度在“绿色的横线(代表每一帧的绘制时间是16ms)”上下波动,说明UI流畅。如果高于绿线很多,说明有卡顿

方法2:使用脚本

1、进入设置——开发者选项,打开“Profile GPU rendering” ,选择“In adb shell dumpsys gfxinfo”

    反复操作要评估的页面,使用脚本抓取每一帧绘制的时间,计算平均绘制时间,如果在16ms附件,说明UI流畅。如果大于16ms很多,说明有卡顿


二、代码逻辑问题&内存泄漏

如果肉眼感觉页面不流畅,或者通过脚本计算出,1s内绘制的帧数比60小很多。但是每一帧平均绘制时间在16ms左右(UI绘制流畅),说明,可能存在代码逻辑问题,或者内存泄漏。

代码逻辑QA是发小不了的,但是可以尝试发现是否有内存泄:

1、多次进入被怀疑内存泄漏的页面,最后退出该页面,使用Android Studio 抓取java 堆栈信息,获取 xxx.hprof 文件,该文件保存在项目目录的captures文件夹下。使用以下命令转成标准的.hprof 文件,或者在Android studio的captures视图直接导出。

hprof-conv dump.hprof converted-dump.hprof  

2、使用Memory Analyzer工具分析

打开导出的标准hprof文件后,查看Histogram,搜索被怀疑内存泄漏的页面Activity的名称,查看该页面Activity的对象有几个,就存在内存泄漏,因为该页面退出了,对应的Activity对象就销毁了,个数应该是0。

右击泄漏的Activity,选择Merge Shortest Paths to GC Roots——with All references,可以进一步找到持有该Activity的对象,也就是这个对象没有销毁,导致Activity没有销毁,出现了内存泄漏


三、性能学习资料:

youtube上搜索“android performance patterns”,第一个视频

腾讯出的一本书《移动APP性能评测与优化

0 0
原创粉丝点击