Go面试题更新 2026-08-03

请解释 Go 语言垃圾回收中的 STW 概念。

考察说明

考查对 Go 垃圾回收机制中暂停行为的理解。

回答思路

  1. 【回答框架 1】STW 是 Stop The World 的缩写,指 GC 过程中暂停所有用户 goroutine 执行,以便 GC 阶段安全操作,此时用户代码无法运行。
  2. 【回答框架 2】Go GC 的 STW 主要集中在标记和清除阶段,尤其是标记阶段的并发设计,通过写屏障等手段减少暂停时间。
  3. 【回答框架 3】Go 通过并发标记、辅助 GC 和调步等手段优化 STW,但在某些阶段仍需短暂暂停,其目标是将 STW 时间控制在毫秒级以下。
  4. 【回答框架 4】STW 时间受堆大小、存活对象数量等因素影响,实际暂停时间可通过 GCTrace 等工具观测评估。
  5. 【关键点 1】STW 指 GC 期间暂停用户 goroutine 的机制。
  6. 【关键点 2】Go 通过并发标记和写屏障减少 STW 时长。
  7. 【关键点 3】STW 时间通常维持在毫秒级,取决于堆和对象图。
  8. 【易错点 1】不要混淆 STW 与 GC 整体耗时,STW 仅是暂停窗口。
  9. 【易错点 2】现代 Go 并非全程 STW,而是阶段暂停,需区分标记与清除阶段。