首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

LeakCanary源码分析(基于2.4版本)

LeakCanary内部用到了Refercence及ReferenceQueue来实现对对象是否被回收的监听。...这是LeakCanary的核心逻辑,因此在讲解LeakCanary之前,我们先来简单了解一下Refercence及ReferenceQueue。...2、LeakCanary基本原理 为了更好的对LeakCanary源码进行分部解析,我们先对LeakCanary实现内存泄漏的整体过程做一个概括。后面在分部对整个流程的源码进行解析。 初始化。...3、LeakCanary源码解析 在2.0之后的版本只需要在build.gradle引入项目就完事了 debugImplementation 'com.squareup.leakcanary:leakcanary-android...具体的初始化逻辑是在InternalAppWatcher,来看源码: fun install(application: Application) { //确保在主线程,否则抛出UnsupportedOperationException

1.7K20

LeakCanary万字源码解析,干货满满

源码分析版本为 LeakCanary 2.12 一、LeakCanary的出现是为了解决什么问题? 在Android的开发领域,内存泄漏一直是一个备受关注的难题。...二、LeakCanary 如何实现内存泄漏监控?...三、LeakCanary 的初始化工作流程 在分析LeakCanary的引用包时我发现了,有一个包名含有watcher-android,推断这应该就是LeakCanary的入口了吧。...五、LeakCanary 相关问题 为什么LeakCanary不能作为线上监控方案? 性能影响:LeakCanary 在进行内存泄漏检测时,需要触发垃圾回收(GC)。...参考资料 LeakCanary 官网 LeakCanary Github 仓库 Android 开源库 #7 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!

32310

Leakcanary 源码分析」看这一篇就够了

Leakcanary 」是我们经常用于检测内存泄漏的工具,简单的使用方式,内存泄漏的可视化,是我们开发中必备的工具之一。 分析源码之前 Leakcanary 大神的 github ,最好的老师。... 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'   // Optional, if you use support library fragments...:   debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.3' } 2、简单使用 public ...分析源码 程序的唯一入口 LeakCanary.install(this); 1、install DisplayLeakService  这个类负责发起 Notification 以及将结果记录下来写在文件里面...notificationManager.notify(0xDEAFBEEF, notification);     afterDefaultHandling(heapDump, result, leakInfo);   } 总结 其实沿着源码分析很容易让人无法自拔

66420

了解LeakCanary1.6.3来龙去脉--源码分析

造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果 内存泄漏可以分为4类:常发性内存泄漏;偶发性内存泄漏;一次性内存泄漏;隐式内存泄漏 内存泄露依据方法 可达性分析法 怎么实现内存泄露的分析 leakCanary...Activity或者Fragment的声明周期,在activity或者fragment结束的时候,监听生命周期转发给 RefWatcher 处理 顺着代码入口install(application) LeakCanary.java...ServiceHeapDumpListener(context, listenerServiceClass)); } DisplayLeakService类是发生内存泄漏时的通知服务 excludedRefs()是排除Android源码出现的内存泄漏问题...= DISABLED) { if (enableDisplayLeakActivity) { // 根据app包名生成LeakCanary关联应用,(桌面上会生成第二个应用图标...() 监听内存泄漏,LeakCanary的处理过程如下: 构建 RetWatcher 提供内存泄漏分析前的相关参数(如 DisplayService 通知服务,excludeRefs() 排除系统源码泄漏

53891

Leakcanary 详解

2.源码分析 我们在build.gradle文件中加入Leakcanary依赖库: debugImplementation 'com.squareup.leakcanary:leakcanary-android...:1.6.3' LeakCanary的使用从LeakCanary.install(this)开始, 下面我们从入口开始分析: //LeakCanary.java /** * Creates...packageManager.setComponentEnabledSetting(component, newState, DONT_KILL_APP); } 接下来是重点: ActivityRefWatcher.install(context, refWatcher); 源码如下...LeakCanary是这么做的:onDestroy以后,一旦主线程空闲下来,延时5秒执行一个任务:先判断Activity有没有被回收?...否则, LeakCanary主动触发一次gc,再进行以上两个步骤,如果发现这个Activity还没有被回收,就认为这个Activity很有可能泄漏了,并dump出当前的内存文件供之后进行分析。

34440
领券