请解释 Go 语言中的垃圾回收(GC),并说明其作用是什么?
考察说明
考察对 Go 垃圾回收机制的基本理解及其在内存管理中的作用。
回答思路
- 【回答框架 1】GC 即垃圾回收,Go 运行时自动管理内存,自动识别并回收不再使用的对象,释放内存。其核心作用是避免手动管理内存,降低内存泄漏和悬垂指针风险。
- 【回答框架 2】Go 的 GC 采用并发三色标记-清除算法,标记阶段从根对象遍历,标记可达对象,清除阶段回收未标记对象。Go 通过写屏障和混合写屏障减少停顿,实现低延迟。
- 【回答框架 3】GC 触发条件包括堆内存增长达到一定比例、定期触发等。调优参数如 GOGC 控制触发频率,平衡 CPU 和内存。
- 【回答框架 4】GC 的目标是减少暂停时间(STW),同时保证吞吐量和内存利用率。Go 的 GC 在大部分情况下暂停时间极短,适合云原生和网络服务场景。
- 【关键点 1】Go GC 自动管理内存,避免手动释放。
- 【关键点 2】算法为并发三色标记-清除。
- 【关键点 3】通过写屏障降低 STW 时间。
- 【关键点 4】GOGC 控制触发频率。
- 【易错点 1】GC 并不能保证业务幂等或解决所有内存问题,如循环引用(Go 中无法回收)需注意。
- 【易错点 2】过度调低 GOGC 可能增加 CPU 开销,需结合压测。