美文网首页
LeakCanary2.0简析

LeakCanary2.0简析

作者: MIRROR1217 | 来源:发表于2021-07-01 23:10 被阅读0次

LeakCanary是一个Android中检查内存泄漏的框架,其使用方法简单,自动检测内存泄漏问题并且还能显示出泄漏路径,深受Android开发者喜欢。但是一直没有对它的原理进行分析,今天正好有空研究下。

1.LeakCanary的检测原理

1.1内存泄漏的原理

内存泄漏:Java中不再需要的对象依然被引用,导致对象被分配的内存无法被回收。
Java现在判断可回收对象采用的是可达性分析算法:当一个对象到GC ROOTS没有引用链项链时,则证明此对象是不可用的。

QQ20210701-0.jpg

在Java中,可作为GC ROOTS的对象包括以下几种:

  • 虚拟机栈中引用的对象
  • 方法区中静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈中JNI引用的对象(一般说的Native方法)

然后我们在猜测下,在页面关闭后,我们把里面的对象加入一个引用链,然后触发GC,再看里面的对象回收没,如果还存在,那么很有可能发生了内存泄漏。

相关文章

  • LeakCanary2.0简析

    LeakCanary是一个Android中检查内存泄漏的框架,其使用方法简单,自动检测内存泄漏问题并且还能显示出泄...

  • 不是很深入的分析LeakCanary2.0

    Leakcanary2.0 Leakcanary 使用 原理 Reference 、ReferenceQueue ...

  • mybatis-spring解析

    1、概述 原生Mybatis源码简析(上)原生Mybatis源码简析(下)在介绍原生Mybatis源码简析文章中,...

  • 简析 Swift 的模块系统

    简析 Swift 的模块系统 简析 Swift 的模块系统

  • 简析Swift和C的交互

    简析Swift和C的交互 简析Swift和C的交互

  • shiro原理简析+基于springboot基础实践

    1、shiro原理简析 原理简析: 1、subject支持不通调用获取用户信息 2、SecurityManager...

  • Spring Boot启动流程简析

    Spring Boot启动流程简析 木叶之荣,2017年12月 Spring Boot启动流程简析(一) Spri...

  • 黑色的天空

    啊!简析又惊醒了,这已经是第三次了,自从简析从那个噩梦里回来,已经有三天了。简析不明白,为什么她会回来,回...

  • 黑色的天空

    啊!简析又惊醒了,这已经是第三次了,自从简析从那个噩梦里回来,已经有三天了。简析不明白,为什么她会回来,回...

  • 读《为有暗香来》有感(其五)

    于红梅老师在《简析内容 确定目标 选择策略——语文教学设计之我见(其二)》中指出教材内容的简析是确定教学目标的基础...

网友评论

      本文标题:LeakCanary2.0简析

      本文链接:https://www.haomeiwen.com/subject/rlisultx.html