Go 垃圾回收

Go 的垃圾回收负责自动管理堆对象生命周期,它降低了手动内存管理成本,但也会直接影响延迟、吞吐和内存占用。

#type / concept #status / growing #tech / dev #resource / go

[!info] related notes

Go 垃圾回收

一句话定义

Go 垃圾回收是运行时自动回收不再可达对象的一套机制,它让开发者不用手动释放大多数内存,但并不意味着内存问题会自动消失。

核心机制 / 工作原理

Go 的 GC 主要想平衡三件事:

  • 自动管理内存生命周期
  • 控制暂停时间
  • 维持整体吞吐和内存占用的平衡

对日常开发者来说,最实用的认知不是实现细节,而是:

  • 分配很多对象会有成本
  • 长时间保留对象会增加堆压力
  • GC 行为会反映到延迟和内存曲线上

最小例子 / 最小场景

当服务频繁创建大量短生命周期对象时,即使业务逻辑正确,也可能因为分配和回收压力导致性能波动。

为什么这部分重要

很多 Go 服务的性能问题,最后都不是“代码写错了”,而是对象分配模式、缓存策略、切片扩容和生命周期管理不合理。理解 GC 后,才能更稳地读懂 pprof 和优化结果。

边界与易混淆点

  • 有 GC 不等于“内存就不用管”
  • 降低分配次数和减少不必要保活,往往比微观语法优化更有效
  • GC 问题通常要结合 profiling 一起看,不能只靠猜
创建于 2026/6/20 更新于 2026/6/20