当文中提及目前、目前版本等字眼时均指 Go 1.14,此外,文中所有 go 命令版本均为 Go 1.14。
GC 的认识
- 1. 什么是 GC,有什么作用?
- 2. 根对象到底是什么?
- 3. 常见的 GC 实现方式有哪些?Go 语言的 GC 使用的是什么?
- 4. 三色标记法是什么?
- 5. STW 是什么意思?
- 6. 如何观察 Go GC?
- 7. 有了 GC,为什么还会发生内存泄露?
- 8. 并发标记清除法的难点是什么?
- 9. 什么是写屏障、混合写屏障,如何实现?
- 10. Go 语言中 GC 的流程是什么?
- 11. 触发 GC 的时机是什么?
- 12. 如果内存分配速度超过了标记清除的速度怎么办?
- 13. GC 关注的指标有哪些?
- 14. Go 的 GC 如何调优?
- 15. Go 的垃圾回收器有哪些相关的 API?其作用分别是什么?
- 16. Go 历史各个版本在 GC 方面的改进?
- 17. Go GC 在演化过程中还存在哪些其他设计?为什么没有被采用?
- 18. 目前提供 GC 的语言以及不提供 GC 的语言有哪些?GC 和 No GC 各自的优缺点是什么?
- 19. Go 对比 Java、V8 中 JavaScript 的 GC 性能如何?
- 总结