🦞 Lobsters | 📄 原文链接 | 2026-07-26 收录

观察 Go 新垃圾回收器在堆中的移动轨迹

来源:theconsensus.dev — 2026-07-19

📋 概述

Phil Eaton 深入观察了 Go 1.26 中将 Green Tea GC 设为默认垃圾回收器后的实际表现。通过 perf 工具和堆可视化技术,文章直观展示了 Go 如何按大小类别(size class)在连续的 8KiB 页面(span)中分配对象,并详细对比了新旧 GC 的缓存友好性差异。文章还触及了 Go 作为非移动式回收器(non-moving collector)的固有问题——无法回收稀疏页面(sparse pages),这在某些场景下会导致显著的内存浪费。作者同时对比了 Go 和 C# 的堆布局差异,为系统性能优化提供了宝贵的参考视角。

🔑 核心要点

💡 金句

Go's non-moving collector cannot reclaim sparse pages. This is the residual garbage collector bugaboo. ——Go 的非移动式回收器无法回收稀疏页面,这是其 GC 的顽固痛点。
← 返回 Lobsters 首页