美文网首页
对象可达性分析

对象可达性分析

作者: 策马踏清风 | 来源:发表于2020-04-07 16:59 被阅读0次

java是自动管理内存的语言,需要知道对象是否存活已决定是否清理对象。

引用计数法

  1. 方式: 每当有一个地方引用对象,对象计数器+1,引用失效-1
  2. 判断方式: 计数不为0时存活,否则判断死亡
  3. 优点: 简单实现,高效判断
  4. 缺点: 如果对象相互引用,但是没有其它对象引用这两个。这两个对象会一直相互引用

引用链法

  1. 方式
  • 可达性分析
  • 第一次标记,筛选
  • 第二次标记,筛选
  1. 可达性分析
  • 一系列的GC Roots对象作为起点,向下搜索
  • GC Root对象有: 虚拟机栈中的引用对象、JNI引用对象、方法区中常量、类静态属性引用的对象。
  • GC Root不可达代表对象不可用
  • 不可达对象再经过两次标记筛选后才会加入优先级很低的销毁队列
  1. 第一次标记筛选
  • 条件: 判断该对象是否有必要执行finalize()方法
    需要执行(需要设置)则筛选出来进入下一次筛选
    没必要则判定死亡,执行回收
  1. 第二次标记筛选
  • 对象存放在F-Queue队列中,被一个自动建立,优先级低的Finalizer线程去执行finalize()
  • finalize()方法如果没有或者执行过一次,则视为没必要执行

相关文章

  • GCRoot与safePoint

    HotSpot虚拟机使用可达性分析算法确定对象是否可以被GC。 可达性分析算法从一系列GCRoot对象开始,向下搜...

  • Java虚拟机知识点【引用】

      Java虚拟机采用可达性分析算法来判断对象是否可以回收。可达性分析算法通过一系列的GC Roots对象作为起始...

  • JVM的GC ROOTS有哪些?

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

  • GC策略

    一. 可达性分析与引用 1. 可达性分析 可达性分析是一种判定对象是否存活的方法.算法的基本思想是: 通过一些列成...

  • GC Roots

    可达性分析算法 可达性分析算法是HOTSPOT VM采用的判断对象是否存活的算法 通过一系列称为“GC Roots...

  • 对象可达性分析

    java是自动管理内存的语言,需要知道对象是否存活已决定是否清理对象。 引用计数法 方式: 每当有一个地方引用对象...

  • 二、垃圾收集器与内存分配策略

    一、Java采用可达性算法 虚拟机采用可达性分析来判断对象是否存活的。 它们已GC root对象为起点,向下搜索所...

  • JVM那些事儿(三)-----常见垃圾回收算法

    一,如何判断对象是可回收的对象? 通过可达性分析(Reachability Analysis)来判定对象是否存活的...

  • 《Java深入理解虚拟机》笔记三

    垃圾回收期与内存分配 可达性分析算法 在主流的商用程序语言的主流实现中,都是通过可达性分析来判定对象是否存活。这个...

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

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

网友评论

      本文标题:对象可达性分析

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