Shenandoah e ZGC são dois coletores de lixo avançados projetados para fornecer coleta de lixo eficiente e de baixa latência para aplicativos Java. Aqui estão alguns dos principais benefícios do uso desses coletores:
###Shenandoah GC:
1. Tempos de pausa baixos: o Shenandoah GC foi projetado para minimizar os tempos de pausa, executando a maior parte do trabalho de coleta de lixo simultaneamente com o aplicativo. Isso garante que o aplicativo permaneça responsivo e tenha um bom desempenho mesmo sob uso intenso de memória[1][3].
2. Compactação Simultânea: O Shenandoah GC realiza compactação simultânea, o que significa que compacta o heap enquanto o aplicativo está em execução. Isso reduz a necessidade de pausas completas na coleta de lixo e garante que o heap permaneça compacto e eficiente[1][3].
3. Independente do tamanho do heap: os tempos de pausa do Shenandoah GC são independentes do tamanho do heap. Isso significa que ele pode lidar com grandes heaps sem pausas significativas, tornando-o adequado para aplicações que exigem grandes alocações de memória[1][3].
4. Alto rendimento: O Shenandoah GC foi projetado para fornecer alto rendimento, minimizando o tempo gasto na coleta de lixo. Isso garante que o aplicativo possa continuar a funcionar com eficiência mesmo sob uso intenso de memória[1][3].
###ZGC:
1. Baixa Latência: O ZGC foi projetado para fornecer latência extremamente baixa, minimizando o tempo gasto na coleta de lixo. Ele consegue isso executando a maior parte do trabalho de coleta de lixo simultaneamente com o aplicativo e usando uma abordagem de geração única baseada em região[2].
2. NUMA-Aware: O ZGC foi projetado para ser compatível com NUMA, o que significa que ele pode lidar com eficiência com grandes heaps e vários núcleos de CPU. Isso garante que o coletor de lixo possa aproveitar as vantagens dos recursos de hardware disponíveis[2].
3. Alto rendimento: O ZGC foi projetado para fornecer alto rendimento, minimizando o tempo gasto na coleta de lixo. Isso garante que o aplicativo possa continuar a funcionar com eficiência mesmo sob uso intenso de memória[2].
4. Recurso Experimental: ZGC é um recurso experimental que requer opções específicas de linha de comando para ser ativado. É adequado para aplicações que requerem tempos de pausa muito curtos e podem lidar com grandes alocações de memória[2].
Em resumo, tanto o Shenandoah quanto o ZGC são projetados para fornecer coleta de lixo eficiente e de baixa latência para aplicativos Java. Eles são adequados para aplicações que exigem alto rendimento e podem lidar com grandes alocações de memória.
Citações:[1] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[2] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[3] https://www.reddit.com/r/feedthebeast/comments/r24zg4/upgrade_your_java_to_one_that_has_the_shenandoah/
[4] https://stackoverflow.com/questions/64252590/how-does-clr-gc-compare-to-latest-zgc-and-shenandoah-gc-on-jvm
[5] https://www.uber.com/blog/jvm-tuning-garbage-collection/