Leakcanary
一、什么是内存泄漏
垃圾回收器无法回收应被回收的对象
比如:在Activity生命周期过程中,旋转屏幕时应新建activity,原activity应被销毁。但如果线程一直在引用此activity,则会出现OOM(out of memory)
二、常规检查内存泄漏的方法
1.通过统计平台了解oom
2.重现问题
3.在内存泄漏时dump内存
4.使用内存分析工具反复查看
常用java内存分析工具有MAT、YourKit
三、Leakcanary和MAT、YourKit对比
MAT -- 分析起来步骤繁琐,每次抓到dump文件,先要使用”hprof-conv test.hprof test1.hprof” 转换,再使用MAT分析。分析难度较高,初级工程师较难分析。
YourKit -- 商业化工具
Leakcanary -- 简单易用,查看路径简单,且实时记录log
四、Leakcanary用法
官方:https://github.com/square/leakcanary
build - clean project 加载Leakcanary 代码行中可联想出“Leakcanary”
通知栏中查看oom路径 查看reference 哪些地方引用了该类导致oom
并可实时抓取logcat日志,查看leakcanary日志。