Métodos de Coleta de Lixo em Java, Python e Go

A imagem apresenta um resumo visual dos diferentes métodos de coleta de lixo (Garbage Collection – GC) usados em linguagens de programação como Java, Python, e Go, destacando:

Java:

Java utiliza múltiplos algoritmos de coleta de lixo, incluindo GC generacional. O gráfico mostra a hierarquia de gerações na JVM (Heap e Non-Heap), detalhando a coleta no Young Gen, Old Gen e MetaSpace.
A coleta de lixo evolui com diferentes estratégias, como Serial GC (usa um único thread), Parallel GC (vários threads) e G1 GC (balanceando latência e rendimento). A alocação de heap no G1 é dividida entre espaços de Eden, Survivor e Old Generation.
Python:

Em Python, a coleta de lixo baseia-se na contagem de referências (Reference Counting) e coleta cíclica (Cyclic GC), não sendo usada uma abordagem geracional. O diagrama mostra como Python trata referências circulares e o processo de marcação e varredura (Mark-and-Sweep), onde os objetos marcados são verificados para coleta.
Go:

A linguagem Go utiliza uma estratégia concorrente de Mark-and-Sweep, sem GC geracional. O modelo Tricolor de marcação e varredura é mostrado, com os objetos sendo classificados como inalcançáveis, ativos ou alcançáveis.
Também é destacada a barreira de gravação híbrida usada para otimizar a coleta de lixo, onde o coletor e o mutador trabalham em conjunto para inserir e deletar as barreiras de gravação, mantendo a integridade dos objetos.
Cada seção ilustra de forma clara a forma como diferentes linguagens de programação gerenciam a memória e eliminam objetos não utilizados, otimizando o uso de recursos.