Han*_*Fei 9 sql garbage-collection go
目前我支持用golang编写的数据库上的大表连接.但是gc花费了太多时间.我想关闭go gc并手动触发它.如何配置go build args?
icz*_*cza 22
包文档runtime包含您需要的所有详细信息:
GOGC变量设置初始垃圾收集目标百分比.当新分配的数据与上一次收集后剩余的实时数据的比率达到此百分比时,将触发收集.默认值为GOGC = 100.设置GOGC = off会完全禁用垃圾收集器.运行时/调试包的SetGCPercent函数允许在运行时更改此百分比.请参阅https://golang.org/pkg/runtime/debug/#SetGCPercent.
因此,您可以将环境变量GOGC设置为百分比,即新分配的数据与上一次收集后剩余的实时数据的比率.
当上述数据比率达到值时GOGC,启动(垃圾)收集.初始设置取自GOGCenv变量,或者100未设置变量.该值off禁用垃圾回收.
在运行时,您可以GOGC通过调用来更改比率debug.SetGCPercent(),传递负值以禁用它:
debug.SetGCPercent(-1)
您可以"手动"触发垃圾收集runtime.GC().
完全禁用GC可能不是您想要的.阅读完整的软件包文档,runtime其中提供了有关如何微调GC以及如何跟踪GC运行的详细信息.分析它们并采取相应的行动.
另请注意,Go 1.7今天发布了改进的垃圾收集器:
由于垃圾收集器的加速和标准库中的优化,程序应该运行得更快.与Go 1.6相比,具有许多空闲goroutine的程序将经历更短的垃圾收集暂停.
如果还没有,请先测试使用Go 1.7编译的应用程序,然后再采取进一步措施.