Android-[开源框架]-leakcanary代码流程梳理

本文中得时序图的uml源码和简化图的draw.io的源文件分享在百度云中
可自行下载修改添加
https://pan.baidu.com/s/1G0LHpgabGt4tyapcYggcwA

1. leakcanary使用方法及学习

关于leakcanary的详细分析已经有很多大牛分析过了,主要看了以下几篇,通俗易懂,用来学习很好
https://www.jianshu.com/p/1e7e9b576391
https://www.liaohuqiu.net/cn/posts/leak-canary/
https://blog.csdn.net/cloud_huan/article/details/53081120

2. leakcanary代码流程

下面是自己总结的流程
leakcanary工作详细过程:
在这里插入图片描述

leakcanary工作简化流程:
在这里插入图片描述

3.总结

LeakCanay的入口是在application的onCreate()方法中声明的,其实用的就是Application的ActivityLifecycleCallbacks回调接口监听所有activity的onDestory()的,在这个方法进行RefWatcher.watch对这个对象进行监控。

具体是这样做的,封装成带key的弱引用对象,然后GC看弱引用对象有没有回收,没有回收的话就怀疑是泄漏了,需要二次确认。然后生成HPROF文件,分析这个快照文件有没有存在带这个key值的泄漏对象,如果没有,那么没有泄漏,否则找出最短路径,打印给我们,我们就能够找到这个泄漏对象了。

重要的是leakcanary开源,可以自行添加扩展自己想要的功能,使检测更加强大。

猜你喜欢

转载自blog.csdn.net/TaylorPotter/article/details/83859292