Coleta de lixo (gc)

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