美文网首页
Android JVM可达性的理解

Android JVM可达性的理解

作者: 大川的川 | 来源:发表于2021-03-31 09:08 被阅读0次

    说到JVM可达性,我们不得不讲讲隐式引用的概念,什么是隐式引用?

    - 隐式引用:非静态内部类和非静态匿名内部类,在编译器编译过程中,隐式的为我们传入了this,这就是我们可以在方法中使用this这个关键字的原因,了解了隐式引用,那么为什么它会是导致内存泄漏? 这里又得说明一下虚拟机的垃圾回收策略。
    - 垃圾回收策略:Java采用根搜索算法,当GCRoots不可达时,才会回收。也就是说GC会收集那些不是GCRoots且没有被GCRoots引用的对象。
    - 可达性:只要在内存中存在就意味着没有被回收,就是可达性,比如,对象A和对象B,对象A引用了对象B,此时对象A存在于栈帧中,从A这个GCRoot作为根起点向下搜索的引用链中包含了对象B,那么这两个对象均具有可达性,且不会被回收(这也就是Handle持有Activity之后,Activity关闭后可能未被回收的原因)

    相关文章

      网友评论

          本文标题:Android JVM可达性的理解

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