LeakCanary 内存检测

垃圾回收机制根据算法判断对象是否引用  通过引用计数法,被引用则次数+1

可达性分析,如果被相互引用,而没有被Gc检测到则也会回收

LeakCanary 内存检测_第1张图片

Android 中 -- finalize 执行回收,System.Gc也是执行回收,一般Gc不会立即调用 会延时

RUntime.getRuntime.gc          gc()

引入

LeakCanary 内存检测_第2张图片

调试使用debug ,发布则releas

初始化

LeakCanary 内存检测_第3张图片

 源码

LeakCanary 内存检测_第4张图片

绑定通知,通过builder模式,,exec 过滤已知内存泄漏:

LeakCanary 内存检测_第5张图片

比如输入法引起的内存泄漏,厂商的内存泄漏 vivo 等

LeakCanary 内存检测_第6张图片

LeakCanary 内存检测_第7张图片

默认启动图标 true,然后watch... 监控ActivityFragment

  LeakCanary 内存检测_第8张图片

可以再我们的APPlition中绑定生命周期

LeakCanary 内存检测_第9张图片

判断版本大于O?

LeakCanary 内存检测_第10张图片

注册

LeakCanary 内存检测_第11张图片

LeakCanary 内存检测_第12张图片

watch

LeakCanary 内存检测_第13张图片

弱引用包装对象

强引用和弱引用

LeakCanary 内存检测_第14张图片

引用方式

LeakCanary 内存检测_第15张图片

弱引用 软引用  虚引用,虚引用get方法返回Null

带参数的引用:

 

判断线程

LeakCanary 内存检测_第16张图片

 过滤文件

LeakCanary 内存检测_第17张图片

ecternalStorageDirectory.listFiles

LeakCanary 内存检测_第18张图片

LeakCanary 内存检测_第19张图片

LeakCanary 内存检测_第20张图片

服务在独立进程/线程中运行

新版引用:

引入后自动初始化,不需要再Applition中初始化

LeakCanary 内存检测_第21张图片

LeakCanary 内存检测_第22张图片

观察某个Object

LeakCanary 内存检测_第23张图片

增加了AndroidX

LeakCanary 内存检测_第24张图片

watch:移除队列,创建弱引用

LeakCanary 内存检测_第25张图片

垃圾数量大于0 执行gc

LeakCanary 内存检测_第26张图片

判断时间是否小于60s

LeakCanary 内存检测_第27张图片

你可能感兴趣的:(jvm,java,算法)