Java GC与ZGC的全面解析,能否一问到底?

摘要:Java GC 与 ZGC 全面解析 Java 垃圾回收(GC)是 JVM 自动管理内存的核心机制,而 ZGC(Z Garbage Collector)是 OpenJDK 推出的一款低延迟、可扩展的新一代垃圾收集器。本文从基础 GC 概念切
Java GC 与 ZGC 全面解析 Java 垃圾回收(GC)是 JVM 自动管理内存的核心机制,而 ZGC(Z Garbage Collector)是 OpenJDK 推出的一款低延迟、可扩展的新一代垃圾收集器。本文从基础 GC 概念切入,深入解析 ZGC 的设计、原理、特性及适用场景。
一、Java GC 基础 1. 核心目标 GC 的核心是自动回收不再被引用的对象内存,避免内存泄漏和手动内存管理的复杂性,核心原则: 识别「存活对象」和「垃圾对象」; 回收垃圾对象占用的内存并重新分配; 尽可能减少对应用线程的停顿(STW,Stop-The-World)。 2. 经典 GC 分类(按代际 / 特性) 收集器 适用代际 核心特点 典型停顿时间 适用场景 Serial GC 新生代 单线程、简单高效 百毫秒级 小内存、单核场景 Parallel GC 新生代 多线程、高吞吐量 几十毫秒级 后台计算、批处理 CMS 老年代 并发标记清除、低延迟 毫秒级(部分阶段) 低延迟要求的服务 G1 GC 整堆 区域化、可预测停顿 几十毫秒级 中等延迟、大内存场景 ZGC 整堆 并发、低延迟、可扩展 亚毫秒级(<10ms) 超大内存、超低延迟场景 3. 经典 GC 的痛点 Serial/Parallel GC:STW 时间随堆内存增大线性增加; CMS:内存碎片严重、并发阶段占用 CPU、无法处理浮动垃圾; G1:大堆(如百 GB 级)下仍有明显 STW,内存划分粒度有限。
阅读全文