> 三色标记(Tri-color Marking)是现代并发 GC(G1、ZGC、Shenandoah、Go GC)的核心算法。它让 GC 标记阶段与用户程序(Mutator)并发执行,减少 Stop-The-World 时间。但并发执行会破坏标记正确性,写屏障(Write Barrier)是修复这一问题的关键机制。 …
2026-06-02
> 分代 GC 基于"弱分代假设(Weak Generational Hypothesis)":大多数对象在生命很短后就死亡。通过将堆分为年轻代(Young Generation)和老年代(Old Generation),GC 可以频繁快速地回收短命对象,极少打扰长命对象。本文覆盖 Eden/Survivor 空间的工…
2026-06-02
> G1(Garbage-First)是 JDK 9+ 的默认 GC,目标是在可预测的暂停时间内完成垃圾回收。核心创新是将堆划分为大小相等的 Region,打破了分代 GC 的固定边界,按"垃圾最多优先"原则动态选择回收集合。本文深入 Region 管理、RSet、SATB 写屏障和 Mixed GC 的算法细节。 相…
2026-06-02
> ZGC(Z Garbage Collector)是 JDK 11 引入的低延迟 GC,目标是任意堆大小下暂停时间 < 10ms。核心创新是染色指针(Colored Pointers):将 GC 元数据直接编码进对象指针,通过负载屏障(Load Barrier)在读取指针时动态修正,实现几乎完全并发的标记和压缩。 相…
2026-06-02
> 引用计数(Reference Counting)是另一种内存管理策略:每个对象记录有多少指针指向它,计数归零时立即释放。CPython、Swift、Rust(Rc/Arc)都采用此方案。本文深入引用计数的实现细节、循环引用问题,以及 Python 的循环检测算法和 Rust 的编译期解决方案。 相关文章:三色标记与…
2026-06-02