垃圾回收(GC)是自动内存管理的核心机制,让程序员从手动 malloc/free 的陷阱中解放出来。本文梳理 GC 的起源动机、核心权衡,以及各主流语言的选择背景。
2026-05-25
所有现代 GC 都建立在四种基础算法之上:标记-清除、标记-整理、复制收集、引用计数。理解它们的原理、优缺点和适用场景,是理解 G1、ZGC 等复杂收集器的前提。
2026-05-25
分代收集是现代主流 GC 的核心设计哲学,建立在一个关键经验观察上:大多数对象"朝生夕死"。本文梳理分代假说的理论基础、分代堆的结构设计,以及 Minor GC 和 Major GC 的触发机制。
2026-05-25
CMS(Concurrent Mark-Sweep)是 Java 第一个真正意义上的并发收集器,它把大部分标记工作放到与应用线程并发执行,大幅缩短了停顿时间。本文分析 CMS 的四个阶段、两大缺陷,以及为何最终被 G1 取代。
2026-05-25
G1(Garbage-First)是 JDK 9 起的默认收集器,它通过将堆分割为等大的 Region,用优先队列选择收益最高的 Region 回收,在可预测停顿时间和高吞吐量之间取得了良好平衡。
2026-05-25
ZGC 和 Shenandoah 代表了 JVM GC 技术的最新水平,将 STW 停顿压缩到亚毫秒级。两者的核心创新在于把对象移动操作也并发化,而这正是 G1 无法解决的问题。
2026-05-25
Go 的 GC 设计体现了一种鲜明的工程哲学:用并发三色标记换取极低停顿,不用分代,混合写屏障保证并发正确性。本文梳理 Go GC 的演进历史、核心机制,以及与 JVM GC 的设计差异。
2026-05-25
Python(CPython)采用引用计数为主、分代 GC 为辅的混合策略。引用计数提供了即时、确定性的内存回收,分代 GC 专门解决引用计数无法处理的循环引用问题。
2026-05-25
GC 调优的核心不是调参数,而是先诊断问题,再针对性优化。本文梳理 JVM GC 日志的解读方法、常见 GC 问题的根因定位,以及 G1/ZGC 的实用调优策略。
2026-05-25