Android性能分析的几种方法
-
通过Memory Monitor 查找内存泄漏
Android Profiler中的Memory Monitor可以实时查看app的内存占用情况。通过操作app界面,抓取某段时间的heap dump分析内存泄漏情况
image
这个图是从主页反复进入选择APP页面过程抓取的heap dump信息,通过搜索SelectAppActivity发现存在多个实例,存在内存泄漏无疑,要查找具体泄漏的原因需要用到mat工具。
将刚才的heap dump导出文件,然后通过android 命令行工具hprof-conv转换为标准的heap dump,导入mat查看
image
然后通过path to GC Roots找到引用路径,发现是EventBus未注销引起的泄漏
image image
- LeakCanary
LeakCanary是square公司出的一个java/Android内存泄漏检测工具,具体使用见github:https://github.com/square/leakcanary
在apk运行过程中发生内存泄漏
image
- 使用Android Device Monitor中的TraceView分析性能
TraceView有两种使用方法:
- 方法级别:在代码中手动开启,统计某一函数的耗时,会在sdcard中输出trace文件,导入ddms即可查看
Debug.startMethodTracing('tracepath') Debug.stopMethodTracing()
- 时间段级别:通过ddms的Method Profiling或者Android Profile CPU中的method trace开启,用于统计一段时间内的函数耗时
比如分析list滚动性能,通过incl cpu time / call total 计算每个onBindingViewHolder耗时,来查看是否有阻塞操作
image
网友评论