有关golang垃圾回收一些自己的理解
看看官方是怎么解释的
|
|
带着自己来的理解翻译一下
|
|
垃圾回收的一些时机
Golang gc 的触发方式
- 自动检测 heap上超过阈值(起始32k)
- 用户主动调用
- 定时2分钟触发gc
GC调优的一些建议
- 合理化内存分配的速度、提高赋值器的 CPU 利用率
- 在遇到需要例如 gorutine或者新的对象等情况下,按需分配,用时分配,而不是一开始就大良分配,过多的对象或者过多的routine或导致调度器的压力
- 降低并复用已经申请的内存
- 类似于sync.pool 等用来存储可以复用的对象,来降低频繁的标记清理。
- 调整 GOGC
- 我们已经知道了 GC 的触发原则是由步调算法来控制的,其关键在于估计下一次需要触发 GC 时,堆的大小。可想而知,如果我们在遇到海量请求的时,为了避免 GC 频繁触发,是否可以通过将 GOGC 的值设置得更大,让 GC 触发的时间变得更晚,从而减少其触发频率,进而增加用户代码对机器的使用率呢?答案是肯定的
溜了~