LeakCanary 核心原理,以及源码浅析
发布于 2022-09-20 23:33:34
关注者
0
被浏览
17
3 个回答
-
注册activity等的生命周期监听,当调用ondestory的时候判断当前要销毁对象在内存中的实例对象是否存在,存在的话会手动调用一次回收,然后在进行判断是否存在如果还存在那就认为是有强引用无法回收,认为是内存泄漏。
-
监控到activity和fragment执行onDestroy时,使用WeakReference指向该对象,并传入自定义ReferenceQueue参数,调用GC一段时间后,检查ReferenceQueue是否有该对象,如果有则表示没有内存泄露,如果没有,则表示GC回收失败,出现内存泄露问题; 在确定内存泄露之后,获取内存快照,分析具体内存泄露的对象引用链;
-
自身维护一个队列,如果act fragment新增,加入队列,放ondestory检测队列里这个实例否为空,不空就泄露。