
Go 面试突击GC、内存管理与性能调优 20 题GC 是 Go 后端面试必问考察实战优化意识。本文梳理 20 道经典 GC 与性能题。一、GC 基础Q1. Go GC 是哪种算法并发三色标记 写屏障。Q2. GC 几个阶段Mark Setup → Marking → Mark Termination → Sweep。Q3. 什么是 STWStop-The-World整个进程暂停。Q4. 1.5 之前 GC 的痛点单核 STW最长几十秒。Q5. 1.5 之后最大改进并发 mark write barrierSTW 1ms。Q6. 什么是触发 GC堆大小增长超过阈值。Q7. 阈值怎么算根据 GOGC、之前堆大小预测。Q8. 主动调用 GCruntime.GC()仅在测试和特殊场景下。二、写屏障Q9. 什么是写屏障并发 GC 中业务代码修改引用时调用的 hook。Q10. Dijkstra 风格 vs Yuasa 风格Go 用 Dijkstra 风格的插入屏障。Q11. 写屏障带来多少开销约 5%。三、内存调优Q12. GOGC 默认多少100堆增 100% 时触发 GC。Q13. GOGC 越大越慢还是越快越大 → GC 触发频率低 → CPU 占用低但峰值延迟可能高。Q14. GOMEMLIMIT 含义对堆可分配大小上限配合 GOGC 一起调。Q15. sync.Pool 是避 GC 工具是。它循环复用对象避免临时对象。Q16. 什么场景用 sync.Pool高频临时对象bytes.Buffer、sql.Row、protobuf Message。Q17. 怎样减少堆分配复用对象slice 预分配避免返回 interface避免 boxing四、性能调优Q18. pprof 三大方法runtime/pprof程序内net/http/pprof远程拉go test -bench基准Q19. trace 三大要素goroutine、heap、thread。Q20. 性能调优顺序找到瓶颈top -cum针对性优化benchmark 验证trace 验证调度五、实战debug.SetGCPercent(200)// 高并发、低 GC 触发频率debug.SetMemoryLimit(230)// 容器内存限额保护六、避坑清单不要在生产用runtime.GC()——会激增 STW减少 reflection——慢且耗内存小心 closure 持有外部指针——延迟释放七、总结与展望GC 和性能调优需要理论 实测结合。掌握 GOGC / GOMEMLIMIT / sync.Pool / pprof 几件套能让你在生产中独立优化一个服务。未来Go 团队的分代 GC已在路线图会让 GC 更高效。八、参考文献runtime/mgc.goGo 官方 blog1.5 concurrent GC阿里 Go 性能调优案例