(4.2.39)内存泄漏检测LeakCanary源码分析
来源:互联网 发布:nosql数据库入门 pdf 编辑:程序博客网 时间:2024/06/15 13:09
- leakcanary-watcher 实现了基本的内存检测框架,只是实现了监视机制,具体怎么监视+如何处理等都通过callback回调处理
- RefWatcher 核心观察器,持有以下实例对象以实现内存监视机制
- RefWatcherBuilder 构建[核心观察器],传入1-6号对象
Set retainedKeys; //[核心]持有那些待检测以及产生内存泄露的引用的key
ReferenceQueue queue; //[核心] 用于判断弱引用所持有的对象是否已被GC
DebuggerControl debuggerControl; //[1.debug校验器] 用于查询是否正在调试中,调试中不会执行内存泄露检测
GcTrigger gcTrigger; //[2.GC控制器] 用于在判断内存泄露之前,再给一次GC的机会
HeapDumper heapDumper; //[3. 堆信息导出器] 用于在产生内存泄露室执行dump 内存heap
WatchExecutor watchExecutor; //[4. 可延迟执行线城池] 执行内存泄露检测的线程池executor
HeapDump.Listener heapdumpListener;//[5. 堆信息分析器] 用于分析前面产生的dump文件,找到内存泄露的原因
ExcludedRefs excludedRefs; //[6. 白名单map]用于排除某些系统bug导致的内存泄露
- leakcanary-analyzer 提供了基于haha的堆内存分析器HeapAnalyzer,用来对 dump 出来的内存进行分析并返回内存分析结果 AnalysisResult,内部包含了泄漏发生的路径等信息供开发者寻找定位
- leakcanary-android: 这个 module 是与 Android 世界的接入点,用来专门监测 Activity 的泄漏情况,利用 leakcanary-watcher 来进行弱引用+手动 GC 机制进行监控
- RefWatcherBuilderAndroid 构建android使用的[核心观察器],传入1-6号android对象
- DisplayLeakService 后台服务[AbstractAnalysisResultService]的子类,其onHeapAnalyzed(…) 在泄漏时会被回调
- DebuggerControlAndroid //[1.debug校验器] 用于查询是否正在调试中,调试中不会执行内存泄露检测
- HeapDumperAndroid //[3. 堆信息导出器] 用于在产生内存泄露室执行dump 内存heap
- package dumpfilehelp //[3.1 IO文件目录管理器] 用于创建和管理 存储heap信息的文件
- WatchExecutorAndroid //[4. 可延迟执行线城池] 执行内存泄露检测的线程池executor
- HeapDumpListenerAndroid //[5. 堆信息分析器] 用于分析前面产生的dump文件,找到内存泄露的原因
- package analyzerservice //[5.1] 开启一个跨进程后台服务,并调用【leakcanary-analyzer】对堆内存信息进行分析,分析结果通过发广播方式传给另外一个后台服务
HeapAnalyzerService 一个跨进程后台服务,并调用【leakcanary-analyzer】对堆内存信息进行分析,分析结果通过发广播方式传给另外一个后台服务
AbstractAnalysisResultService 用于接收跨进程后台服务所传递的堆内存分析结果,触发onHeapAnalyzed(…) ps:其具体子类在[HeapDumpListenerAndroid]被实例化时构造 - ExcludedRefsAndroid //[6. 白名单map]用于排除某些系统bug导致的内存泄露
- ActivityWatcherManager 专注于监听Activity是否泄漏 ,内部使用了 application#registerActivityLifecycleCallbacks 方法来监听 onDestory 事件
阅读全文
0 0
- (4.2.39)内存泄漏检测LeakCanary源码分析
- leakcanary 检测内存泄漏
- leakcanary 检测内存泄漏
- LeakCanary分析内存泄漏
- 内存泄露检测神器 -- LeakCanary源码分析
- Android内存泄漏检测-LeakCanary
- Android内存泄漏检测-LeakCanary
- 用 LeakCanary 检测内存泄漏
- 使用LeakCanary检测内存泄漏
- 内存泄漏的检测;leakCanary
- Android-LeakCanary检测内存泄漏
- android LeakCanary检测内存泄漏
- 《android源码分析系列》LeakCanary- 如何检测 Activity 是否泄漏
- LeakCanary (Android 检测内存泄漏工具的使用)
- LeakCanary:检测所有的内存泄漏
- LeakCanary:检测所有的内存泄漏
- LeakCanary检测安卓内存泄漏
- Android检测内存泄漏之leakcanary
- Tomcat 内存溢出对应解决方式
- Tomcat 多个项目jar包共享
- SplitContainer 控件作用
- EF实现考勤管理---(MVC,签到签退)
- 递归求简单交错幂级数的部分和
- (4.2.39)内存泄漏检测LeakCanary源码分析
- FrameLayout 帧布局
- linux系统对时间函数的操作需要注意的问题
- ORACLE EXPDP ORA-31626 问题
- 浏览器访问网页的详细内部过程
- 虚函数和纯虚函数的区别
- IOS的GCD基本用法
- 1、(一)学习如何Debug
- DMABUF, DMA mapping,IOMMU的区别