最近终于有空优化一波项目的性能了,第一波借助Android Studio自带的Profiler工具检测内存泄漏。
第一步、创建Profiler的SESSIONS
第二步、进入MEMORY内存监控
右侧带有绿色原点的就是此时运行的Profiler的SESSION,点击右侧MEMORY进入内存监控的详情模块
第三步、选中“Capture heap dump”,点击"Record"
第四步、查看Heap Dump文件
第三步中抓取一段时间后,会自动停止,并打开Heap Dump文件
可以看到抓取到2个会导致内存泄漏的地方,点击查看详细的内存泄漏
2:内存泄漏所在的类
3:内存泄漏的列表
4:查看内存泄漏的引用链
5:展示最近的GC点
6:显示会产生内存泄漏的详细位置和变量
在主Fragment采用List集合维护要切换的子Fragment,这样集合中关联了Fragment对象,就不能及时的销毁对象,就会存在内存泄漏的风险。
第五步、修改内存泄漏点
直接把Fragment的生命周期交给FragmentManager,通过设置TAG,来查找Fragment。
第六步、重新检测
至此,就修复了内存泄漏的风险。