主要描述LeakCanary的检查原理,具体实现过程,可以查看源码分析,2.x可以对View做分析检查。
XMind导出文字
LeakCanary
基本原理:基于WeakReferences,在创建一个weak对象时,指定一个ReferenceQueue,当weak对象被回收时,就会将对象添加到ReferenceQueue
1. 当Activity被回收时,创建一个对应的weak对象,指定ReferenceQueue
2. 生成一个key,将<key, weak对象>放入 watchedReferences 这个map中
3. 5s之后,根据key从 watchedReferences 中获取weak对象,然后检查ReferenceQueue中是否存在指定weak对象
如果ReferenceQueue中存在weak对象,则说明Activity已经被回收;将weak对象从 watchedReferences 中移除
如果ReferenceQueue没有找到weak对象,则说明Activity没有被回收,将对象从 watchedReferences 中移除,然后添加到 retainedReferences 这个map中
4. 如果 retainedReferences 中对象数大于5个,则开始使用 haha 开始进行可达性分析,确定泄漏链
网友评论