LeakCanary 流程图
leakcanary
LeakCanary 的机制如下:
RefWatcher.watch()会以监控对象来创建一个KeyedWeakReference弱引用对象- 在
AndroidWatchExecutor的后台线程里,来检查弱引用已经被清除了,如果没被清除,则执行一次 GC - 如果弱引用对象仍然没有被清除,说明内存泄漏了,系统就导出 hprof 文件,保存在 app 的文件系统目录下
HeapAnalyzerService启动一个单独的进程,使用HeapAnalyzer来分析 hprof 文件。它使用另外一个开源库 HAHA。HeapAnalyzer通过查找KeyedWeakReference弱引用对象来查找内在泄漏HeapAnalyzer计算KeyedWeakReference所引用对象的最短强引用路径,来分析内存泄漏,并且构建出对象引用链出来。- 内存泄漏信息送回给
DisplayLeakService,它是运行在 app 进程里的一个服务。然后在设备通知栏显示内存泄漏信息。
363

被折叠的 条评论
为什么被折叠?



