LeakCanary原理整理

2021-03-31  本文已影响0人  朱哥

主要描述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 开始进行可达性分析,确定泄漏链

上一篇下一篇

猜你喜欢

热点阅读