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?-优快云博客