Sobes.tech
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.