Como é implementada a recolha automática de lixo nas linguagens de programação?
sobes.tech IA
Resposta da IA
A recolha automática de lixo (Garbage Collection, GC) é um mecanismo de gestão de memória que liberta automaticamente a memória ocupada por objetos que já não são utilizados pelo programa.
Principais abordagens de implementação do GC:
-
Contagem de referências (Reference Counting) — a cada objeto é atribuído um contador de referências. Quando o contador chega a zero, o objeto é eliminado. Desvantagem — não funciona com referências cíclicas.
-
Marcação e varredura (Mark-and-Sweep) — o GC marca primeiro todos os objetos acessíveis, depois limpa todos os não marcados, considerando-os lixo.
-
Cópia (Copying Collector) — a memória é dividida em duas áreas, os objetos ativos são copiados de uma área para outra, libertando a antiga.
-
GC generacional (Generational GC) — os objetos são divididos em gerações de acordo com o tempo de vida, limpando com maior frequência a geração jovem, o que aumenta a eficiência.
Por exemplo, no Android, é utilizado Dalvik/ART com GC generacional, que funciona em segundo plano, minimizando atrasos e prevenindo fugas de memória.