美文网首页
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可达性的理解

    说到JVM可达性,我们不得不讲讲隐式引用的概念,什么是隐式引用? - 隐式引用:非静态内部类和非静态匿名内部类,在...

  • 探索 Java 内存管理机制

    目录 什么是内存? 什么是 Java 内存模型? 什么是 JVM? JVM 是怎么划分内存的? 什么是可达性算法?...

  • 每日一题,130,中等

    先标记,再清楚,类似jvm里面的可达性分析 class Solution { int[] rowArray =...

  • jvm虚拟机

    @(settle_ JavaEE)[#jvm] jvm虚拟机 如何判断一个对象是死还是生? 1. 可达性算法 可达...

  • 极客时间《架构师训练营》第九周课后作业

    作业一 请简述 JVM 垃圾回收原理 垃圾回收就是清除 JVM 堆内不再被引用的对象。 可达性分析 从GC Roo...

  • JVM的GC ROOTS有哪些?

    JVM垃圾回收是根据可达性分析算法来判断堆里面的对象是否有用。可达性分析算法是从GC ROOTS扫描对象引用链,来...

  • JVM三.垃圾收集器

    博主最近复习深入理解JVM一书,整理归纳,以形成系统认识和方便日后复习。本文主要介绍 可达性分析法实现 垃圾收集器...

  • 深入理解JVM(第三章笔记)

    垃圾回收算法 JVM的垃圾回收算法并不是引用计数法,而是可达性分析算法 可达性分析算法: 在判断一个对象是否可以被...

  • jvm-并发可达性分析的学习记录

    本文主要针对周志明大大的《深入理解JVM 第三版》一书的3.4.6小节:并发的可达性分析做一个学习笔记。因为自己在...

  • 理解Dalvik和ART、JVM虚拟机

    理解基本的Dalvik和ART、JVM虚拟机 一、Dalvik介绍 Dalvik VM是Android平台的核心组...

网友评论

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

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