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

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

乐正秦斩
2023-04-24

分代回收器分为新生代和老年代,新生代大概占1/3,老年代大概占2/3;

新生代包括Eden、From Survivor、To Survivor;

Eden区和两个survivor区的 的空间比例 为8:1:1 ;

垃圾回收器的执行流程:

  1. 把 Eden + From Survivor 存活的对象放入 To Survivor 区;
  2. 清空 Eden + From Survivor 分区,From Survivor 和 To Survivor 分区交换;
  3. 每次交换后存活的对象年龄+1,到达15,升级为老年代,大对象会直接进入老年代;
  4. 老年代中当空间到达一定占比,会触发全局回收,老年代一般采取标记-清除算法;

 类似资料:
  • 本文向大家介绍简述分代垃圾回收器是怎么工作的?相关面试题,主要包含被问及简述分代垃圾回收器是怎么工作的?时的应答技巧和注意事项,需要的朋友参考一下 分代回收器有两个分区:老生代和新生代,新生代默认的空间占比总空间的 1/3,老生代的默认占比是 2/3。 新生代使用的是复制算法,新生代里有 3 个分区:Eden、To Survivor、From Survivor,它们的默认占比是 8:1:1, 它的

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

  • 主要内容:1 什么是Java 垃圾回收,2 Java 垃圾回收的优势,3 如何取消对象引用,4 finalize()方法,5 gc()方法,6 Java 垃圾回收的例子1 什么是Java 垃圾回收 在Java中,垃圾意味着未引用的对象。 垃圾回收是自动回收运行时未使用的内存的过程。换句话说,这是销毁未使用对象的一种方法。 我们在C语言中使用free() 函数,在C ++中使用delete()。但是,在Java中它是自动执行的。因此,java提供了更好的内存管理。 2 Java 垃圾回收的优势 它

  • 问题内容: 我想知道Java中发生的垃圾回收。它真的能够处理所有未使用的对象并释放最大可能的内存吗? 我还想知道Java垃圾收集与另一种语言(例如C#)相比如何?然后,如何自动垃圾收集与从像C这样的语言中进行手动收集相比又能达到更好的效果呢? 问题答案: 是的,这就是垃圾收集的重点。 有许多不同形式的垃圾收集。如果不增强算法,最简单的形式即引用计数就无法处理某些类型的垃圾(循环引用)。 Java(

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

  • 新生代回收器:Serial、ParNew、Parallel Scavenge 老年代回收器:Serial Old、Parallel Old、CMS 新生代回收器一般采用的是复制算法,复制算法效率较高,但是浪费内存; 老生代回收器一般采用标记清楚算法,比如最常用的CMS;