今天看啥  ›  专栏  ›  ThinkInAI社区

Golang GC 从原理到优化

ThinkInAI社区  · 公众号  ·  · 2024-11-20 13:02
    

主要观点总结

本文讨论了Go语言中的垃圾回收(GC)和内存管理的关键点和优化手段。文章首先介绍了GC的理论和GC算法,包括标记清除、标记整理、标记复制和分代收集等。然后介绍了Go语言中的内存分配方式,包括基于空闲链表分配方式的TCMalloc算法和基于并发标记与清扫算法的三色标记法。接着讨论了GC的问题和优化的必要性,包括GC对CPU资源的占用、内存分配和GC通常占用较多CPU资源等问题。然后介绍了一些优化手段,包括sync.pool、GOGC参数设置、ballast内存控制、GCTuner、SetMemoryLimit等。此外,还介绍了其他优化方法,如大缓存(bigcache)、堆外分配和GAB(Goroutine allocation buffer)等。最后,文章提到了Go 1.20中的arena官方文档,这是一种可以由用户手动管理但能被runtime感知的内存申请方式,可以有效降低OOM风险。

关键观点总结

关键观点1: GC的理论和算法介绍

包括标记清除、标记整理、标记复制和分代收集等。

关键观点2: Go语言中的内存分配方式

包括基于空闲链表分配方式的TCMalloc算法。

关键观点3: GC的问题和优化的必要性

包括GC对CPU资源的占用、内存分配和GC通常占用较多CPU资源等问题。

关键观点4: 优化手段

包括sync.pool、GOGC参数设置、ballast内存控制、GCTuner、SetMemoryLimit等。

关键观点5: 其他优化方法

如大缓存(bigcache)、堆外分配和GAB(Goroutine allocation buffer)等的介绍。

关键观点6: Go 1.20中的arena官方文档

这是一种可以由用户手动管理但能被runtime感知的内存申请方式,可以有效降低OOM风险。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照