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:
- Marcação (Mark): O GC percorre todas as raízes (goroutines, pilhas, variáveis globais) e marca todos os objetos acessíveis.
- 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.