Sobes.tech
Senior

Como funciona o garbage collector em Go?

sobes.tech IA

Resposta da IA

O Garbage Collector (GC) em Go é um coletor de lixo baseado em gatilhos, concorrente, de marcação e varredura, com o algoritmo mark-and-sweep. Ele funciona em paralelo com o thread principal, minimizando as pausas no programa.

As principais etapas do GC em Go:

  1. Marcação (Mark): O GC percorre todas as raízes (goroutines, pilhas, variáveis globais) e marca todos os objetos acessíveis.
  2. Varredura (Sweep): Todos os objetos não marcados são considerados lixo e liberados.

O GC de Go é otimizado para baixa latência, portanto, a coleta ocorre em paralelo com a execução do programa, reduzindo o tempo de pausa. Além disso, o GC gerencia a memória automaticamente, libertando o programador da gestão manual.

Assim é como parece um ciclo simplificado do GC:

// A memória é alocada via new ou make
p := new(int)
// O GC liberará automaticamente a memória quando p se tornar inacessível

Nas últimas versões, o GC do Go foi aprimorado para trabalhar com multithreading e reduzir a fragmentação de memória.