Definição – o que significa a coleta de lixo (GC)?
A coleta de lixo (GC) é uma abordagem dinâmica para gerenciamento automático de memória e alocação de heap que processa e identifica blocos de memória mortos e realoca o armazenamento para reutilização. O objetivo principal da coleta de lixo é reduzir vazamentos de memória.
A implementação do GC requer três abordagens principais, como segue:
- Mark-and-sweep – Em processo quando a memória se esgota, o GC localiza toda a memória acessível e, em seguida, recupera a memória disponível.
- Contagem de referência – objetos alocados contêm uma contagem de referência do número de referência. Quando a contagem de memória é zero, o objeto é lixo e então destruído. A memória liberada retorna ao heap de memória.
- Coleção de cópias – Existem duas partições de memória. Se a primeira partição estiver cheia, o GC localiza todas as estruturas de dados acessíveis e as copia para a segunda partição, compactando a memória após o processo de GC e permitindo memória livre contínua.
Algumas linguagens de programação e plataformas com GC integrado (por exemplo, Java, Lisp, C # e .Net) autogerenciam vazamentos de memória, permitindo uma programação mais eficiente.
Definirtec explica a coleta de lixo (GC)
A abordagem dinâmica da coleta de lixo para alocação automática de heap trata de erros comuns e caros que geralmente resultam em defeitos de programas do mundo real quando não detectados.
Por serem difíceis de identificar e reparar, os erros de alocação custam caro. Portanto, a coleta de lixo é considerada por muitos como um recurso essencial da linguagem que torna o trabalho do programador mais fácil com gerenciamento de alocação de heap manual inferior. No entanto, o GC não é perfeito e as seguintes desvantagens devem ser consideradas:
- Ao liberar memória, o GC consome recursos de computação.
- O processo de GC é imprevisível, resultando em atrasos de sessão dispersos.
- Quando as referências de objeto não utilizadas não são descartadas manualmente, o GC causa vazamentos de memória lógica.
- O GC nem sempre sabe quando processar em ambientes de memória virtual de computadores desktop modernos.
- O processo de GC interage mal com os sistemas de cache e memória virtual, resultando em dificuldades de ajuste de desempenho.
Esta definição foi escrita no contexto da Programação Geral