Android性能调试方法工具集合 - 持续更新( 二 )


每一个柱状图都是由三种颜色构成:蓝、红、黄 。
蓝色代表的是这一帧绘制的时间 。通俗来说 , 就是记录了需要花费多长时间在屏幕上更新视图 。用代码语言来说 , 就是执行视图的方法 , 创建或更新每一个视图的List 的时间 。
红色代表的是这一帧渲染所需要的时间 。通俗来说 , 就是记录了执行视图绘制的耗时 。用代码语言来说 , 就是用ES 的 API 接口进行 2D 渲染List 的时间 。
黄色代表的是这一帧 CPU 等待 GPU 处理的时间 。通俗来说 , 就是CPU 等待 GPU 发出接到命令的回复的等待时间 。用代码语言来说 , 就是这是一个阻塞调用 。
示例:略
2 , :
基本功能:使用类似上述追踪渲染性能 , 但是同样兼容性有问题 , 可尝试配合使用
打开方式:中 -》-》GPU
第二篇_内存优化 一 , 影响面
最直接的影响为GC、OOM、APP本身的缓存和快速加载等性能
备注:.4引进了新的 ART 虚拟机来取代虚拟机 。虚拟机的 GC 是非常耗资源的 , 并且在正常的情况下一个硬件性能不错的设备也会很容易耗费掉 10 – 20 ms 的时间 , 因此一旦发生GC , 基本都会有所卡屏;ART则可将GC耗时锐减到5ms左右 , 但滚屏等大量渲染途中发生GC , 依然容易卡屏 。
二 , 思路和要求
整体内存思路:
1.严控非图片缓存的内存 , 稳控图片缓存
2.分散峰值碰撞
3.禁止内存抖动 , 严防泄露
4.尽可能及时主动回收资源
基本要求:
1.均值控制在可用内存的2/3
2.分页增长控制在10M+-5(视分页资源重度)
3.峰值不发生OOM
4.无内存抖动
5.基本无泄露(偶现泄露控制在5M以下)
三 , 检测维度
根据模块和业务的不同 , 主流面采用如下:
1.随机2h以上的内存表现
2.人工冒烟单模块10min以上内存表现
3.一般操作结合不同加载环境下内存表现
四 , 典型问题
1.内存过高 , 无法释放 , 甚至OOM
2.频繁的高峰
3.抖动
4.泄露
五 , 调测工具
检测和解决界面内存问题 , 和第三方提供了很多调试手段 , 包括静态检测工具和动态代码分析工具 。
1 , :
基本功能:内存实时监控 , 直观定位当前虚拟机进程实时内存变动
打开方式:中 -》-》
说明:吃电脑内存 , 对日常工作有影响 , 不用时 , 请折叠关闭或者左上角暂停 。
示例:如图

Android性能调试方法工具集合 - 持续更新

文章插图
2 , ADB:
基本功能:内存实时数据抓取 , 也可以抓到一些重要 , 比如 , 可以看到是否正常销毁;轻量级 。
打开方式:adb shell(轻快) , 或者左侧菜单 (稍重)
说明:按需使用
示例: adb shell–a [] , 
Android性能调试方法工具集合 - 持续更新

文章插图

Android性能调试方法工具集合 - 持续更新

文章插图
3 , : Dump Java Heap
基本功能:检测当前实时Java Heap , 并可以计算泄露的及其 tree 。
打开方式: -》-》Dump Java Heap
说明:按需实时使用
示例:
该示例可以直接抓取到泄露的 , 并分析出简单的泄露问题 , 如此被持有;