Sobes.tech
Senior

Existem formas de gerir (ajustar) os momentos de início do Garbage Collector? Por exemplo, configurações do compilador.

sobes.tech IA

Resposta da IA

A gestão do recolhimento de lixo (GC) em Go é limitada, mas existem algumas configurações e ferramentas para ajustá-lo:

  • A variável de ambiente GOGC ou runtime/debug.SetGCPercent define o limiar em que o GC é ativado, em percentagem do tamanho atual do heap. Por exemplo, GOGC=100 significa que o GC é ativado quando o heap duplica de tamanho.

  • Pode-se chamar programaticamente runtime.GC() para iniciar manualmente a recolha de lixo.

  • O perfil com pprof ajuda a entender o comportamento do GC e a otimizar o código.

  • Nas últimas versões do Go, a paralelização e a minimização das pausas do GC foram melhoradas, mas não há controlo direto sobre os momentos de início, pois o GC funciona automaticamente.

Exemplo de configuração do limiar do GC:

import "runtime/debug"

func main() {
    debug.SetGCPercent(200) // O GC é ativado com menos frequência, quando o tamanho do heap duplica
}