Junior — Middle
Como é implementado o processo de libertação de memória reversa dentro do sistema?
sobes.tech IA
Resposta da IA
No Go, o processo de libertação de memória é implementado através do coletor de lixo incorporado. Este rastreia automaticamente os objetos na memória que não são mais utilizados pelo programa e os liberta.
As principais etapas do coletor de lixo são:
- Marcação (Mark) — o coletor percorre todas as referências ativas e marca os objetos acessíveis.
- Varredura (Sweep) — os objetos não marcados são considerados não utilizados e são libertados.
Isto acontece em segundo plano, sem exigir que o desenvolvedor gerencie manualmente a memória, o que reduz a probabilidade de erros relacionados com fugas de memória ou libertações duplas.
Exemplo de uso de memória em Go:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // aloca memória
fmt.Println(len(data))
// Após sair da função, data torna-se inacessível e será limpa pelo coletor de lixo
}
Aqui, a memória do slice data será libertada automaticamente quando deixar de ser referenciada.