【JVM17】垃圾回收器

本文详细介绍了JVM中的垃圾回收器,包括GC分类与性能指标,如串行回收器Serial、并行回收器ParNew和Parallel Scavenge,以及CMS和G1等。重点关注了GC的吞吐量、暂停时间和内存占用,并探讨了不同场景下的适用选择。同时,文章还提到了CMS的内存碎片问题和G1的区域化分代式回收策略,以及垃圾回收器的新发展,如Shenandoah和Z GC。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、GC分类与性能指标

(1)垃圾收集器分类

  1. 按照碎片处理方式:

压缩式垃圾回收器

  1. 压缩式垃圾回收器会在GC后,对存活对象进行压缩整理,消除回收后的碎片。
  2. 空间再分配:指针碰撞

非压缩式垃圾回收器

  1. 非压缩式回收器,在回收后不进行整理操作
  2. 空间再分配:维护空闲列表
  1. 按照工作内存区间划分:年轻代垃圾收集器、老年代垃圾收集器

(2)垃圾收集器的新能指标

  1. 吞吐量
    在这里插入图片描述
  2. 暂停时间(关注重点)
    执行垃圾收集时,程序工作线程暂停的时间。
  3. 内存占用:Java堆区多占用的内存大小。
  4. 下图描述出:吞吐量高,用户线程暂停时间就长;用户线程暂停时间短,系统吞吐量就低;
    在这里插入图片描述

2、不同的垃圾回收器概述(面试)

(1)7款经典的垃圾收集器

  1. 串行回收器:Serial(串行)、Serial Old;
    在这里插入图片描述

  2. 并行回收器:ParNew、Parallel(并行的) Scavenge、Parallel Old;
    在这里插入图片描述

  3. 并发回收器:CMS、G1;
    在这里插入图片描述

在这里插入图片描述

  1. 垃圾回收器的搭配
    在这里插入图片描述

  2. 查看默认的垃圾回收器的参数:

-XX:+PrintCommandLineFlags

3、Serial回收器:串行回收

  1. Serial 收集器是32位操作系统hotspot虚拟机在client模式下的默认新生代垃圾收集器
  2. Serial 采用了复制算法,串行回收,STW机制执行内存回收
  3. 还提供了Serial Old ,它用于回收老年代,也采用了串行回收、STW等机制,内存回收则使用标记-压缩算法;在Server模式下,Serial Old还作为CMS垃圾回收器的后备方案
  4. 设置使用SerialGC垃圾回收器参数

-XX:+UserSerialGC ———— 新生代使用Serial GC; 老年代使用Serial Old GC

在这里插入图片描述

小结:

这种垃圾垃圾回收器在工作期间会完全停止用户线程,在交互性强的JavaWeb中不使用这个串行垃圾回收器了;

4、ParNew回收器:并行回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值