参考:Golang什么时候会触发GC - 简书
总结一下,一共有主动和被动两种:
主动就是:RD调用来触发,但是一般不会自己调
被动就是分为两种:一种是搞一个定时器,定时来GC;一种是给内存搞一个上限,到达上限就自动触发。但是问题是,什么时候被动触发呢?
一开始的思路是:在go框架或者公司内部平台配置的。但实际上是在go标准库里面搞的。
具体代码位置是:
/usr/local/Cellar/go/1.16.5/libexec/src/runtime/ 里面的forcegchelper和init方法
/usr/local/Cellar/go/1.16.5/libexec/src/runtime/ 里面的gcStart