GMTC2016大会上的刘刚做了报告《360手机卫士性能优化之路》,从中学习到了很多干货,总结一下要点,有兴趣可以直接点击看看专访刘刚:360手机卫士的性能监控与优化
ppt下载地址:https://pan.baidu.com/s/1gfkZ4Kr
android apk的性能指标主要是包含内存、冷热启动时间、四大组件的加载时间、流量、电量等。
1、静态代码分析。采用LINT,FINDBUGS,StrictMode等方法,并在JENKINS中集成,自动化分析。
2、实时性能监控。通过AOP的手段,采用AspectJ 重写器。在相关的代码出静态埋点,请求数据进行记录,提供可评估的数据指标。主要是进程冷热启动、四大组件启动、各个线程卡慢监测和异步处理性能监测。
3、使用Stalker
• 监控应用的多个进程
• 进程的cpu、内存、电量、流量信息
• 系统全局的cpu、内存、电量信息
• 界面的帧率信息
4、使用LeakCanary检查Activity 是否泄漏的问题,通过onDestroy 方法检查,存在泄漏,则会dump 内存镜像,获取栈信息
5、内存分析。主要是hprof报告
6、磁盘分析。手机上NAND Flash的原理:读写操作Page单位,擦除操作Block单位。
具体规则:
删除些数据时,芯片将标记这些Page为闲置状态,但并不会立马执行擦除操作;
定写入数据时,如果目前磁盘剩余空间充足,则由芯片指定Block后直接按Page为单位进行写入即可;
块写入数据时,如果目前磁盘剩余空间不足,为了获得足够的空间,磁盘先将某块Block的内该 容读至缓存,然后再在该Block上进行擦除操作,最后将新内容与原先内容一起写入至该Block;
7、发生问题,收集手机环境信息:
- 基本信息
- 双卡信息
- ROOT 信息
- 网络信息
- 自动分析耗电
- 分析屏幕密度
- 生成内存镜像文件
- Method Tracing
- CPU/内存监控
最后谈谈我的感受,第一次听说FINDBUGS,StrictMode,JENKINS,第一次知道AspectJ可以分析apk的性能,第一次知道要分析磁盘性能。