
什么是 GC,有什么作用?
- 1. 什么是 GC,有什么作用?
- 2. 根对象到底是什么?
- 3. 常见的 GC 实现方式有哪些?Go 语言的 GC 使用的是什么?
- 4. 三色标记法是什么?
- 5. STW 是什么意思?
- 6. 如何观察 Go GC?
-
- 方式1:`GODEBUG=gctrace=1`
- 方式2:`go tool trace`
- 方式3:`debug.ReadGCStats`
- 方式4:`runtime.ReadMemStats`
- 7. 有了 GC,为什么还会发生内存泄露?
-
- 形式1:预期能被快速释放的内存因被根对象引用而没有得到迅速释放
- 形式2:goroutine 泄漏
- 验证
- 8. 并发标记清除法的难点是什么?
- 9. 什么是写屏障、混合写屏障,如何实现?
- 10. Go 语言中 GC 的流程是什么?
- 11. 触发 GC 的时机是什么?
- 12. 如果内存分配速度超过了标记清除的速度怎么办?
- 13. GC 关注的指标有哪些?
- 14. Go 的 GC 如何调优?
- 例1:合理化内存分配的速度、提高赋值器的 CPU 利用率
-
- 例2:降低并复用已经申请的内存
- 例3:调整 GOGC
- 小结
- 15. Go 的垃圾回收器有哪些相关的 API?其作用分别是什么?
- 16. Go 历史各个版本在 GC 方面的改进?
- 17. Go GC 在演化过程中还存在哪些其他设计?为什么没有被采用?
-
- 并发栈重扫
- ROC
- 传统分代 GC
- 18. 目前提供 GC 的语言以及不提供 GC 的语言有哪些?GC 和 No GC 各自的优缺点是什么?
- 19. Go 对比 Java、V8 中 JavaScript 的 GC 性能如何?
-
- V8 的 GC
- Java 的 GC
- 性能比较
- 20. 目前 Go 语言的 GC 还存在哪些问题?
-
- 1. Mark Assist 停顿时间过长
- 2. Sweep 停顿时间过长
- 3. 由于 GC 算法的不正确性导致 GC 周期被迫重新执行
- 4. 创建大量 Goroutine 后导致 GC 消耗更多的 CPU
- 总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38135.html