【JVM】垃圾回收器

常用的垃圾回收器

        垃圾回收器是垃圾回收算法的具体实现。 由于垃圾回收器分为年轻代和老年代,除了G1之外其他垃圾回收器必须成对组合进行使用。

Serial垃圾回收器 + SerialOld垃圾回收器

        Serial是是一种单线程串行回收年轻 代的垃圾回收器。

        -XX:+UseSerialGC 新生代、老 年代都使用串行回收器

回收年代和算法:年轻代复制算法 老年代标记-整理算法

优点: 单CPU处理器下吞吐量非常出色

缺点:多CPU下吞吐量不如其他垃圾回收器,堆如果偏大会让用户线程处于长时间的等待

适用场景:Java编写的客户端程序或者硬件配置有限的场景

Parallel Scavenge垃圾回收器 + Parallel Old垃圾回收器

        PS+PO是JDK8默认的垃圾回收器,多线程并行回收, 关注的是系统的吞吐量。具备自动调整堆内存大小的特点。

回收年代和算法: 年轻代复制算法  老年代标记-整理算法

优点:吞吐量高,而且手动可控。为了提高吞吐量,虚拟机会动态调整堆的参数

缺点:不能保证单次的停顿时间

适用场景:后台任务,不需要与用户交互,并 且容易产生大量的对象 比如:大数据的处理,大文件导出

年轻代-ParNew垃圾回收器

ParNew垃圾回收器本质上是对Serial在多 CPU下的优化,使用多线程进行垃圾回收

-XX:+UseParNewGC 新生代使用ParNew 回收器,老年代使用串行回收器

回收年代和算法: 年轻代  复制算法

优点:多CPU处理器下停顿时间较短

缺点:吞吐量和停顿时间不如G1, 所以在JDK9之后不建议使用

适用场景:JDK8及之前的版本中,与CMS 老年代垃圾回收器搭配使用

老年代-CMS(Concurrent Mark Sweep)垃圾回收器

        CMS垃圾回收器关注的是系统的暂停时间, 允许用户线程和垃圾回收线程在某些步骤中 同时执行,减少了用户线程的等待时间。   

        参数:-XX:+UseConcMarkSweepGC     

回收年代和算法 : 老年代  标记清除算法

优点 :系统由于垃圾回收出现的停 顿时间较短,用户体验好

缺点: 1、内存碎片问题 2、退化问题 3、浮动垃圾问题

适用场景 :大型的互联网系统中用户请求数 据量大、频率高的场景 比如订单接口、商品接口等

CMS垃圾回收器存在的问题

1、CMS使用了标记-清除算法,在垃圾收集结束之后会出现大量的内存碎片,CMS会在Full GC时进行碎片的整理。 这样会导致用户线程暂停,可以使用-XX:CMSFullGCsBeforeCompaction=N 参数(默认0)调整N次Full GC之 后再整理。

2.、无法处理在并发清理过程中产生的“浮动垃圾”,不能做到完全的垃圾回收。

3、如果老年代内存不足无法分配对象,CMS就会退化成Serial Old单线程回收老年代。

4、并发阶段会影响用户线程执行的性能

G1 – Garbage First 垃圾回收器

参数1: -XX:+UseG1GC 打开G1的开关, JDK9之后默认不需要打开

参数2:-XX:MaxGCPauseMillis=毫秒值 最大暂停的时间

回收年代和算法: 年轻代+老年代   复制算法

优点: 对比较大的堆如超过6G的堆回收 时,延迟可控 不会产生内存碎片 并发标记的SATB算法效率高

缺点 :JDK8之前还不够成熟

适用场景: JDK8最新版本、JDK9之后建 议默认使用

什么是Shenandoah?

        Shenandoah 是由Red Hat开发的一款低延迟的垃圾收集器,Shenandoah 并发执行大部分 GC 工作,包括并 发的整理,堆大小对STW的时间基本没有影响。

什么是ZGC?

ZGC 是一种可扩展的低延迟垃圾回收器。ZGC 在垃圾回收过程中,STW的时间不会超过一毫秒,适合需要低延 迟的应用。支持几百兆到16TB 的堆大小,堆大小对STW的时间基本没有影响。

垃圾回收器的技术演进

  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是几个 JVM 垃圾回收相关的面试题及其答案: 1. JVM 垃圾回收都有哪些? JVM 垃圾回收主要分为以下几种:串行垃圾回收、并行垃圾回收、CMS 垃圾回收、G1 垃圾回收等。 2. 串行垃圾回收和并行垃圾回收的区别是什么? 串行垃圾回收和并行垃圾回收的主要区别在于垃圾回收的方式。串行垃圾回收是单线程执行的,即在垃圾回收过程中只有一个线程在执行,而并行垃圾回收是多线程执行的,即在垃圾回收过程中可以有多个线程同时执行。 3. CMS 垃圾回收的特点是什么? CMS 垃圾回收是一种以最短回收停顿时间为目标的垃圾回收。它采用分代收集算法,在回收老年代时,采用标记-清除算法,并发标记和并发清除,以减少垃圾回收的停顿时间,提高系统的响应速度。 4. G1 垃圾回收的特点是什么? G1 垃圾回收是一种面向服务端应用的垃圾回收,它采用分代收集算法,在回收堆内存时,采用标记-整理算法。它具有以下特点:高效、可预测、可配置、可并发、可暂停等。 5. 垃圾回收的主要算法有哪些? 垃圾回收主要采用以下几种算法:标记-清除算法、复制算法、标记-整理算法、分代算法等。 以上是一些常见的 JVM 垃圾回收面试题及其答案,希望能对你有所帮助。在面试过程中,需要根据具体的问题进行回答,同时也需要对垃圾回收的原理和实现有清晰的认识,才能更好地回答相关的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值