go 触发GC的条件

1.系统触发

在GO的源码中,src/runtime/mgc.go 明确标识了GC触发的三种情景

const (
 gcTriggerHeap gcTriggerKind = iota
 gcTriggerTime
 gcTriggerCycle
)
  • gcTriggerHeap: 当所分配的堆达到阀值的时候,会自动触发.
  • gcTriggerTime :当距离上次GC周期超过一定的时间,也会触发GC.时间周期变量是runtime.forcegcperiod 变量为准,默认2分钟
  • gcTriggerCycle: 如果没有开启,则自动开启GC

2.手动触发

通过手动调用runtime.GC来触发.

可能会是在某些业务方法执行完后,因其占用了过多的内存,需要人为释放。又或是 debug 程序所需。

想要查看更加详细的话,请参考Go 什么时候会触发 GC?-CSDN博客

你可能感兴趣的:(golang)