Junior — Middle
Explique o mecanismo de recolha automática de lixo na linguagem Go e como ela gere a memória.
sobes.tech IA
Resposta da IA
Na linguagem Go, é utilizado um recolhedor de lixo automático (Garbage Collector, GC), que gere a memória libertando objetos não utilizados.
O mecanismo baseia-se num algoritmo de rastreio e contagem de acessibilidade de objetos:
- Go inicia a recolha de lixo paralelamente à execução do programa (GC concorrente).
- O GC determina quais objetos no heap já não são acessíveis a partir das referências raiz (por exemplo, variáveis globais, pilhas de goroutines).
- Objetos inacessíveis são considerados lixo e libertados.
Características:
- Go usa uma recolha em três gerações: mark (marcar objetos acessíveis), sweep (libertar objetos inacessíveis).
- A recolha de lixo minimiza as pausas para não bloquear a execução do programa.
- A gestão de memória é automática, o programador não precisa de libertar explicitamente a memória.
Exemplo:
func main() {
s := make([]int, 1000000) // alocação de memória
// uso de s
s = nil // agora o slice não é acessível
// GC libertará a memória na próxima execução
}
Assim, o Go simplifica a gestão de memória, reduzindo a probabilidade de fugas e erros.