Índice:
Definição - O que significa Garbage Collector?
Um coletor de lixo é um software que executa o gerenciamento automático de memória. Seu trabalho é liberar qualquer memória não utilizada e garantir que nenhuma memória seja liberada enquanto ainda estiver em uso. Algumas linguagens, como Java e .NET, apresentam coleta automática de lixo, enquanto outras, como C / C ++, exigem que o programador gerencie manualmente a memória.
Techopedia explica Garbage Collector
A coleta de lixo foi introduzida pela primeira vez pelo criador do Lisp John McCarthy para facilitar o gerenciamento manual de memória ao trabalhar com a linguagem Lisp.
As três principais técnicas usadas por um coletor de lixo para executar o gerenciamento automático de memória são as seguintes:
- Contagem de referência - a referência a cada objeto é contada usando uma variável de contador. Quando o contador chega a zero, isso indica que o objeto não é mais necessário e, portanto, é reciclado.
- Marcar e varrer - Uma travessia recursiva de todos os objetos alcançáveis é realizada em todas as regiões de dados e os objetos alcançáveis são marcados. Os objetos não marcados são então reciclados.
- Parar e copiar - O heap de memória é dividido em duas seções: uma seção que contém os objetos e uma seção vazia para a qual os objetos são transferidos (copiados) se forem marcados. Os objetos não marcados na primeira seção são reciclados esvaziando-o.
Quando um bloco de memória atribuído a um ponteiro / objeto é liberado, o ponteiro / objeto deve ser redefinido para um valor nulo; caso contrário, estará danificado, ou seja, apontando para um bloco de memória inválido.
A coleta de lixo ajuda a reduzir bugs e riscos de segurança causados por indicadores pendentes e problemas de vazamento de memória.
As desvantagens de usar um coletor de lixo incluem a sobrecarga extra de recursos e desempenho. A execução de um coletor de lixo também pode diminuir a velocidade do sistema e, portanto, diminuir seu desempenho.