【吊打面试官系列】Java虚拟机JVM篇 - 关于JVM垃圾回收器

本文介绍了Java8至Java17期间JVM垃圾收集器的变化,重点讲述了Java8的并行GC、Java11后的G1以及Java17新引入的ZGC和Shenandoah。还涵盖了串行、并行、并发和增量式垃圾收集的概念,以及年轻代和GC停顿的区别。

大家好,我是锋哥。今天分享关于JVM垃圾收集器的JVM面试题,希望对大家有帮助;

Java8默认使用的垃圾收集器是什么?

Java8版本的Hotspot JVM,默认情况下使用的是并行垃圾收集器(Parallel GC)。其他厂商提供的JDK8基本上也默认使用并行垃圾收集器。

Java11的默认垃圾收集器是什么?

Java9之后,官方JDK默认使用的垃圾收集器是G1。

Java17的引入的新垃圾收集器是什么?

引入了两个新的垃圾收集器:ZGC 和 Shenandoha。

  • ZGC是一个基于染色指针(colored pointers)技术的低延迟垃圾收集器。
  • Shenandoah是一个基于指针转发(Brooks Pointer)技术的低延迟垃圾收集器。

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网1000道 互联网大厂Java工程师 精选面试题icon-default.png?t=N7T8http://java.python222.com/article/971

常见的垃圾收集器有哪些?

常见的垃圾收集器包括:
串行垃圾收集器:‐XX:+UseSerialGC
并行垃圾收集器:‐XX:+UseParallelGC
CMS垃圾收集器:‐XX:+UseConcMarkSweepG
G1垃圾收集器:‐XX:+UseG1GC
 

什么是串行垃圾收集?

就是只有单个worker线程来执行GC工作。

什么是并行垃圾收集?

并行垃圾收集,是指使用多个GC worker 线程并行地执行垃圾收集,能充分利用多核CPU的能力,缩短垃圾收集的暂停时间。
除了单线程的GC,其他的垃圾收集器,比如 PS,CMS, G1等新的垃圾收集器都使用了多个线程来并行执行GC工作。

什么是并发垃圾收集器?

并发垃圾收集器,是指在应用程序在正常执行时,有一部分GC任务,由GC线程在应用线程一起并发执行。例如 CMS/G1的各种并发阶段。

什么是增量式垃圾收集?

首先, G1的堆内存不再单纯划分为年轻代和老年代,而是划分为多个(通常是 2048个)可以存放对象的小块堆区域(smaller heap regions)。
每个小块,可能一会被定义成 Eden 区,一会被指定为 Survivor 区或者 Old 区。这样划分之后,使得 G1 不必每次都去回收整个堆空间,而是以增量的方式来进行处理: 每次只处理一部分内存块,称为此次 GC 的回收集(collection set)。下一次GC时在本次的基础上,再选定一定的区域来进行回收。增量式垃圾收集的好处是大大降低了单次GC暂停的时间。

什么是年轻代?

年轻代是分来垃圾收集算法中的一个概念,相对于老年代而言,年轻代一般包括:

  • 新生代,Eden区。
  • 存活区,执行年轻代GC时,用存活区来保存活下来的对象。 存活区也是年轻代
    的一部分,但一般有2个存活区,所以可以来回倒腾。

什么是GC停顿(GC pause)?

因为GC过程中,有一部分操作需要等所有应用线程都到达安全点,暂停之后才能执行,这时候就叫做GC停顿,或者叫做GC暂停

GC停顿与STW停顿有什么区别?

这两者一般可以认为就是同一个意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值