网易三面:Java中默认使用的垃圾回收器及特点分版本说说?

文章内容收录到个人网站,方便阅读 :hardyfish.top/

JDK 7(以及之前)

  • 默认垃圾回收器 :
    • 新生代 :Parallel Scavenge(吞吐量优先收集器)
    • 老年代 :Parallel Old
  • 特点 :
    • 并行 GC:多线程回收新生代和老年代,适合批处理、后台任务等吞吐量优先场景。
    • STW(Stop-The-World)时间相对较长。
    • 调优主要依赖 -XX:MaxGCPauseMillis 和 -XX:GCTimeRatio。

JDK 8

  • 默认垃圾回收器 :Parallel GC(新生代 Parallel Scavenge + 老年代 Parallel Old)。
  • 特点 :
    • 吞吐量优先。
    • 新生代复制算法、老年代标记-整理算法。
    • 适合大内存、批量任务,不适合对延迟非常敏感的服务。
  • 备注 :
    • JDK 8 中 G1 GC 是可选(-XX:+UseG1GC),但不是默认。
    • 元空间(Metaspace)替代了永久代(PermGen)。

JDK 9 ~ JDK 10

  • 默认垃圾回收器 :G1 GC(Garbage First)
  • 特点 :
    • 面向低延迟:将堆划分为多个 Region,按优先级回收。
    • 可以预测停顿时间(-XX:MaxGCPauseMillis)。
    • 混合回收(Mixed GC):一次回收新生代 + 部分老年代。
    • 减少了全堆 STW 的次数,但调优复杂度比 Parallel GC 高。

JDK 11 ~ JDK 16

  • 默认垃圾回收器 :依旧是 G1 GC。
  • 特点更新 :
    • JDK 11:G1 增加并行 Full GC,减少单线程 Full GC 带来的长时间停顿。
    • JDK 12:G1 支持 abortable mixed collections(可中断混合回收)。
    • JDK 14:移除 CMS(Concurrent Mark-Sweep)GC。
    • 调优建议:尽量通过 -XX:MaxGCPauseMillis 控制延迟,不盲目调 Region 数量。

JDK 17 ~ 现在

  • 默认垃圾回收器 :G1 GC(依旧默认)
  • 特点更新 :
    • 继续优化停顿预测。
    • 并行化更多阶段。
    • 提供更多可选低延迟 GC:
      • ZGC (-XX:+UseZGC):毫秒级停顿,支持超大堆(TB 级)。
      • Shenandoah (-XX:+UseShenandoahGC):低延迟,停顿时间与堆大小无关。
  • 趋势:低延迟场景逐渐用 ZGC / Shenandoah,G1 作为通用型默认。

汇总表

JDK 版本 默认 GC 特点
7 及以前 Parallel Scavenge + Parallel Old 吞吐量优先,STW 时间长
8 Parallel GC 吞吐量优先,可选 G1
9 ~ 10 G1 GC 低延迟,分 Region 回收
11 ~ 16 G1 GC G1 优化更多并行、可预测停顿
17+ G1 GC 默认 G1,可选 ZGC/Shenandoah 实现极低延迟
相关推荐
陈随易3 分钟前
副业搞钱点子之赛事与活动
前端·后端·程序员
古法老登瞎折腾9 分钟前
大数据智能运维实战(八):从调度任务追到计算引擎——补齐排查链路
java·大数据·运维·spring ai·mcp
砚底藏山河13 分钟前
python量化:实时行情WebSocket断线重连状态机
java·python·websocket·金融
衍生星球17 分钟前
【Java 语言】— 方法(方法定义、调用、参数、返回值、方法重载)
java·开发语言·方法
Profile排查笔记18 分钟前
有哪些开源指纹浏览器项目?先核对客户端、内核与许可证
前端·人工智能·后端·自动化
鶴哥只手遮天24 分钟前
雷达系统与成像仿真:从电磁散射到工程实现-第 1 章 雷达系统的分层架构与指标闭环
后端
喵了几个咪25 分钟前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
王中阳Go26 分钟前
面试官问什么,取决于你简历上写了什么:后端转 Agent 岗的项目准备法
后端·面试·agent
Wang's Blog35 分钟前
Java 项目实战: 交友项目 - 查询评论列表
java·交友