LeakCanary是Android内存泄漏检测工具,能够将内存泄漏在开发的过程中就暴露出来。
LeakCanary工作原理
RefWatcher.watch()创建一个KeyedWeakReference到被监控的对象。
-
接下来,在后台线程中检测这个引用是否被清除,如果没有将会触发GC。
-
如果引用仍然没有清除,将heap内存dump到一个.hprof的文件存放到手机系统里。
-
HeapAnalyzerService在另外一个独立的进程中启动,使用HeapAnalyzer解析heap内存通过HAHA这个项目
-
HeapAnalyzer计算出到GC ROOTs的最短强引用路径决定是否发生Leak,然后建立导致泄漏的引用链。
-
结果被回传到应用程序进程的DisplayLeakService中,然后显示一个泄漏的通知。
LeakCanary基本使用:《LeakCanary让Android内存泄漏无处遁形》
LeakCanary2免写初始化代码原理:《LeakCanary2免写初始化代码原理》www.codercto.com/a/73667.htm…
LeakCanary源码分析:
《LeakCanary源码分析第一讲》:vjson.com/wordpress/l…
《 LeakCanary源码分析第二讲-RefWatcher详解》
《LeakCanary源码分析第三讲-HeapAnalyzerService详解》