← 返回专栏列表

GC 垃圾回收系列

共 9 篇文章

1. GC 系列 #01:GC 总览与历史:自动内存管理的起源与演化

> 垃圾回收(GC)是自动内存管理的核心机制,让程序员从手动 malloc/free 的陷阱中解放出来。本文梳理 GC 的起源动机、核心权衡,以及各主流语言的选择背景。 --- 目录 | 章节 | 说明 | |------|------| | 为什么需要 GC | 手动管理的问题 | | GC 的核心权衡 | 吞吐量、…

2. GC 系列 #02:GC 基础算法:标记-清除、标记-整理、复制收集、引用计数

> 所有现代 GC 都建立在四种基础算法之上:标记-清除、标记-整理、复制收集、引用计数。理解它们的原理、优缺点和适用场景,是理解 G1、ZGC 等复杂收集器的前提。 --- 目录 | 章节 | 说明 | |------|------| | 可达性分析 | 如何判断对象是否存活 | | 标记-清除 | 最古老的 GC …

3. GC 系列 #03:分代假说与分代收集:朝生夕死的工程哲学

> 分代收集是现代主流 GC 的核心设计哲学,建立在一个关键经验观察上:大多数对象"朝生夕死"。本文梳理分代假说的理论基础、分代堆的结构设计,以及 Minor GC 和 Major GC 的触发机制。 --- 目录 | 章节 | 说明 | |------|------| | 弱分代假说 | 统计规律与理论依据 | | …

4. GC 系列 #04:CMS 收集器:Java 第一个并发收集器的设计与缺陷

> CMS(Concurrent Mark-Sweep)是 Java 第一个真正意义上的并发收集器,它把大部分标记工作放到与应用线程并发执行,大幅缩短了停顿时间。本文分析 CMS 的四个阶段、两大缺陷,以及为何最终被 G1 取代。 --- 目录 | 章节 | 说明 | |------|------| | 设计目标 | …

5. GC 系列 #05:G1 收集器:Region 化堆与可预测停顿

> G1(Garbage-First)是 JDK 9 起的默认收集器,它通过将堆分割为等大的 Region,用优先队列选择收益最高的 Region 回收,在可预测停顿时间和高吞吐量之间取得了良好平衡。 --- 目录 | 章节 | 说明 | |------|------| | Region 化堆设计 | 打破物理分代的束…

6. GC 系列 #06:ZGC 与 Shenandoah:亚毫秒级停顿的并发移动收集器

> ZGC 和 Shenandoah 代表了 JVM GC 技术的最新水平,将 STW 停顿压缩到亚毫秒级。两者的核心创新在于把对象移动操作也并发化,而这正是 G1 无法解决的问题。 --- 目录 | 章节 | 说明 | |------|------| | 为什么 G1 的停顿有下限 | 对象移动必须 STW 的根因 …

7. GC 系列 #07:Go 的 GC:并发三色标记与混合写屏障

> Go 的 GC 设计体现了一种鲜明的工程哲学:用并发三色标记换取极低停顿,不用分代,混合写屏障保证并发正确性。本文梳理 Go GC 的演进历史、核心机制,以及与 JVM GC 的设计差异。 --- 目录 | 章节 | 说明 …

8. GC 系列 #08:Python 的内存管理:引用计数与分代循环 GC

> Python(CPython)采用引用计数为主、分代 GC 为辅的混合策略。引用计数提供了即时、确定性的内存回收,分代 GC 专门解决引用计数无法处理的循环引用问题。 --- 目录 | 章节 | 说明 | |------|------| | 引用计数机制 | ob_refcnt 与即时回收 | | 循环引用问题 |…

9. GC 系列 #09:GC 调优实践:JVM 日志解读与 G1/ZGC 参数策略

> GC 调优的核心不是调参数,而是先诊断问题,再针对性优化。本文梳理 JVM GC 日志的解读方法、常见 GC 问题的根因定位,以及 G1/ZGC 的实用调优策略。 --- 目录 | 章节 | 说明 | |------|------| | GC 调优的基本原则 | 先量化,再优化 | | GC 日志解读 | 关键字段…