垃圾回收(Garbage Collection, GC)是Java生态的核心技术之一,其演进历程不仅反映了硬件性能的飞速发展,也映射了从桌面应用到云原生时代的场景变迁。本文将带你回顾JVM垃圾回收器的重要发展阶段,解析每个时代的关键技术及其背后的设计哲学。
一、单线程时代:Serial GC(JDK 1.3)
核心特点
-
单线程回收:所有GC操作由单个线程执行,触发时暂停所有应用线程(Stop-The-World, STW)。
-
分代模型:
- 年轻代:复制算法(存活对象从Eden区复制到Survivor区)
- 老年代:标记-整理算法(Serial Old)
-
适用场景:单核CPU、客户端应用(如早期Swing程序)。
历史意义
作为JVM最早的GC实现,Serial GC奠定了分代回收的基础逻辑,但其单线程模型在多核时代迅速暴露性能瓶颈。