Middle
Quais são as características do coletor de lixo (Garbage Collector)?
sobes.tech IA
Resposta da IA
O Recolhedor de Lixo (Garbage Collector) é uma parte do ambiente de execução (por exemplo, JVM, .NET CLR, Node.js) que gere automaticamente a memória. A sua principal tarefa é libertar a memória ocupada por objetos que já não são utilizados pelo programa.
Características:
- Gestão automática de memória: Liberta o programador da alocação e libertação manual de memória (como em C++).
- Prevenção de fugas de memória: Remove automaticamente objetos aos quais já não há referências, minimizando o risco de fugas.
- Algoritmos de funcionamento: Existem diferentes algoritmos de recolha de lixo (Mark and Sweep, Copying, Generational, G1, etc.), cada um com as suas próprias características em desempenho, latências e fragmentação de memória.
- Pausas (Stop-the-world): Alguns algoritmos GC requerem parar a execução de todos os threads da aplicação por um tempo para realizar a recolha de lixo. Isto pode causar atrasos perceptíveis, especialmente em aplicações sensíveis.
- Configurabilidade: A maioria dos ambientes de execução permite configurar parâmetros do GC (por exemplo, escolha do algoritmo, tamanhos do heap) para otimizar o desempenho.
- Gerações de objetos (Recolha de lixo generacional): A eficiência aumenta ao dividir o heap em "gerações". Objetos jovens provavelmente se tornarão lixo rapidamente, enquanto os antigos permanecerão por muito tempo. O GC verifica com maior frequência a "geração jovem".
- Não determinismo: O momento exato em que ocorrerá a recolha de lixo geralmente não é garantido. Isto pode dificultar a otimização de memória a baixo nível em certos cenários.