Python 3.14.0 引入了一种实验性的“增量”垃圾回收(GC)机制,旨在通过分段扫描对象而非进行全代扫描,来减少长停顿时间。虽然这种方法在特定工作负载下显著改善了延迟,但也引发了普遍的“内存压力”问题——即系统无法足够快地回收内存,导致内存占用升高,甚至可能引发内存溢出错误。 与 Java 或 Go 等允许开发者选择垃圾回收实现语言不同,Python 的设计并未提供此类切换选项。由于内存回归问题以及维护双重 GC 策略的复杂性,Python 核心团队在 3.14.5 版本中正式撤回了这些更改。 本文强调,尽管引用计数仍然是 Python 内存管理的核心,但分代 GC 对于处理循环引用至关重要。实验性的增量 GC 在低负载场景下表现良好,但在“最坏情况”的工作负载下却难以应对:频繁且占用大量内存的对象创建导致回收器滞后,与传统 GC 相比,其内存占用大幅增加。因此,团队最终回归到了虽然停顿时间较长但更为可靠的分代回收模型。