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


但是有没有最终泄露可以多抓取几次进行确认 , 对于重度的 , 一般认为1.5min内需要完成回收 。

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

文章插图
4 , MAT
官方地址:
基本功能:检测内存文件 , 评估大对象 , 评估泄露引用关系
打开方式:将3中抓到的hprof文件进行转换 , 然后用MAT打开 , 
转换方式:
1 , 在面板 , 右键hprof文件 , 有菜单 to.hprof
2 , 进入SDK这个工具hprof-conv , hprof--a.hprof xxx-b.hprof
说明:无法完成泄露分析时 , 深度使用
示例:
MAT功能多且强大 , 公开使用文档较多 , 这里示例一个quick start方式-查询
1 ,  点击下的项将得到结果:
Android性能调试方法工具集合 - 持续更新

文章插图
2 , 点击表头可进行排序 , 在表的第一行可以输入正则表达式来匹配结果 , 比如输入你想检测的的 , 注意大小写一致
Android性能调试方法工具集合 - 持续更新

文章插图
3 , 在某一项上右键打开菜单选择 ->withrefs将列出该类的实例:
Android性能调试方法工具集合 - 持续更新

文章插图
它展示了对象间的引用关系 , 比如展开后的第一个子项表示这个()被()中的属性所引用
4 , 快速找出某个实例没被释放的原因 , 可以右健 GC Roots--> all /weak/soft etc.
Android性能调试方法工具集合 - 持续更新

文章插图
得到的结果是:
Android性能调试方法工具集合 - 持续更新

文章插图
从表中可以看出 -> … ->这条线路就引用着这个实例 。用这个方法可以快速找到某个对象的GC Root , 一个存在的对象是不会被GC回收掉的 。
从右边的heap栏目也可以看到引用对象的大小 。
六 , 扩展 1 , :
基本功能:实时追踪一段时间内的内存调用情况 , 可按线程分类展开 , 开发还可以直接跳转到 code 。
打开方式:中 -》-》-》
示例:
Android性能调试方法工具集合 - 持续更新

文章插图
2 , Leak
基本功能:实时追踪内存泄露 , 直接运行在终端
打开方式:
-》地址:
-》-:
-》中文guide:
-》一个-
第三篇_启动优化 一 , 影响面
APP的开启 , 各分页的跳转等待 , 甚至ANR
二 , 思路和要求
基本思路:
1.理清启动任务 , 减少主线程的负担
2.充分利用异步方式整合初始化任务
3.优先加载界面 , 懒加载重度和非必须View
4.优先加载静态数据 , 懒加载重度数据和实时网络数据
基本要求:
1.APP启动无明显黑屏 , 界面间跳转无明显闪屏
2.冷启动到广告页不超过1s , 启动主页重度页不超过1s , 分页不超过500ms
3.严格红闪不超过一次
备注:
启动时间 , 有许多参考统计方法 , 精度和区间也有所差异 , 这里采用比较易用的方式 , 使用adb抓取的时间值;
对于的启动到第一页 , 参考下述日志方法;
严格红闪 , 参考系统设置-》开发者模式-》打开严格模式 , 主线发生程耗时事件时屏幕闪烁 。