Sobes.tech
Senior

Are there ways to manage (tune) the moments of Garbage Collector launch? For example, compiler settings?

sobes.tech AI

Answer from AI

In Go, garbage collector (GC) management is limited, but there are some settings and tools for tuning:

  • The environment variable GOGC or runtime/debug.SetGCPercent sets the threshold at which GC runs, as a percentage of the current heap size. For example, GOGC=100 means GC runs when the heap doubles.

  • You can programmatically call runtime.GC() to manually trigger garbage collection.

  • Profiling with pprof helps understand GC behavior and optimize code.

  • In recent versions of Go, parallelism and minimization of GC pauses have been improved, but there is no direct control over the timing of GC, as it works automatically.

Example of setting the GC threshold:

import "runtime/debug"

func main() {
    debug.SetGCPercent(200) // GC runs less frequently, when the heap doubles
}