Sobes.tech
Junior — Middle

Como funciona o mecanismo de recolha automática de lixo no sistema de gestão de memória?

sobes.tech IA

Resposta da IA

No Go, o mecanismo de recolha automática de lixo (GC) baseia-se num algoritmo de rastreio com contagem de acessibilidade de objetos. Quando um programa aloca memória para objetos, o recolhedor de lixo é executado periodicamente para determinar quais objetos já não são acessíveis a partir dos pontos raiz (por exemplo, variáveis globais, pilhas de goroutines).

O GC em Go funciona em paralelo com a execução do programa, minimizando as pausas. Utiliza três fases principais:

  1. Marcação — o recolhedor marca todos os objetos acessíveis a partir das raízes.
  2. Limpeza — a memória ocupada por objetos não marcados (inacessíveis) é libertada.
  3. Compressão — em Go, a compressão de memória não é aplicada, pois é utilizado um algoritmo com divisão em gerações e a fragmentação é controlada de outra forma.

Assim é como parece um ciclo GC simplificado:

// Exemplo de uso implícito de GC
func main() {
    data := make([]byte, 1024*1024) // aloca 1MB
    _ = data
    // Quando data deixar de ser usado, o GC libertará a memória automaticamente
}

Desta forma, o programador não gere a memória manualmente, e o GC garante a libertação automática de objetos não utilizados, reduzindo a probabilidade de fugas de memória.