当前位置: 首页 > 面试题库 >

简述分代垃圾回收器是怎么工作的?

公沈义
2023-03-14
本文向大家介绍简述分代垃圾回收器是怎么工作的?相关面试题,主要包含被问及简述分代垃圾回收器是怎么工作的?时的应答技巧和注意事项,需要的朋友参考一下

分代回收器有两个分区:老生代和新生代,新生代默认的空间占比总空间的 1/3,老生代的默认占比是 2/3。 新生代使用的是复制算法,新生代里有 3 个分区:Eden、To Survivor、From Survivor,它们的默认占比是 8:1:1,

它的执行流程如下:

把 Eden + From Survivor 存活的对象放入 To Survivor 区;

清空 Eden 和 From Survivor 分区; From Survivor 和 To Survivor 分区交换,From Survivor 变 To Survivor,To Survivor 变 From Survivor。

每次在 From Survivor 到 To Survivor 移动时都存活的对象,年龄就 +1,当年龄到达 15(默认配置是 15)时,升级为老生代。大对象也会直接进入老生代。

老生代当空间占用到达某个值之后就会触发全局垃圾收回,一般使用标记整理的执行算法

以上这些循环往复就构成了整个分代垃圾回收的整体执行流程。

 类似资料:
  • 分代回收器分为新生代和老年代,新生代大概占1/3,老年代大概占2/3; 新生代包括Eden、From Survivor、To Survivor; Eden区和两个survivor区的 的空间比例 为8:1:1 ; 垃圾回收器的执行流程: 把 Eden + From Survivor 存活的对象放入 To Survivor 区; 清空 Eden + From Survivor 分区,From Sur

  • 在计算机领域,垃圾收集这个词确切说是堆内存自动回收,因为广义上讲,所谓垃圾也包括内存之外的一些东西,比如不再使用的文件句柄,但这些东西一般不算在这个概念里,这个名字大概是一开始取了个形象的名字 从历史看,垃圾回收技术既古老又年轻,现代的高级语言,基本都会将垃圾回收结合在语言设计里面,可能很多人想不到的是,垃圾回收早在上世纪60年代就已经在lisp中实现了,而在之后长达三十多年的时间里,这门技术只是

  • 问题内容: 什么是JavaScript垃圾回收?为了编写更好的代码,对于Web程序员来说,了解JavaScript垃圾回收有什么重要意义? 问题答案: 从该页面引用: JScript使用了非世代的标记清除垃圾收集器。它是这样的: 每个“范围内”的变量都称为“清除剂”。清道夫可以指数字,对象,字符串等。我们维护一个清道夫列表- 变量进入作用域时将移入scav列表,超出范围时将其移出scav列表。 垃

  • 问题内容: 有人可以解释一下G1垃圾收集器的工作原理吗?我还无法在任何地方找到任何全面,易于理解的描述。 谢谢 问题答案: 收集器将堆分成固定大小的区域,并跟踪这些区域中的实时数据。它将一组指针(“记住的集”)保留在区域内和区域外。当认为有必要使用GC时,它将首先收集实时数据较少的区域(因此,“垃圾优先”)。通常,这意味着一步就可以收集整个区域:如果进入一个区域的指针数量为零,则无需对该区域进行标

  • 主要内容:垃圾回收算法,1、垃圾回收器的分类,2、串行垃圾回收器,3、吞吐量优先,4、响应时间优先,5、G1(Garbage First,jdk9默认),6、Full GC垃圾回收算法 1.标记清除 2.标记复制 3.标记整理 内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度) 内存整齐度:复制算法=标记清除算法>标记压缩算法 内存利用率:复制算法<标记清除算法=标记压缩算法 年轻代: 存活率低 复制算法 老年代: 区域大,存活率高 标记清除(内存碎片不是太多)+标记压缩共同实现 1、

  • 1.CMS介绍 CMS(Concurrent Mark-Sweep)(并发 标记-清除)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。 是标记清除算法的落地实现的垃圾回收器。 2.CMS过