Shenandoah et ZGC sont deux garbage collector avancés conçus pour fournir un garbage collection efficace et à faible latence pour les applications Java. Voici quelques avantages clés de l’utilisation de ces collecteurs :
Shenandoah GC :
1. Faibles temps de pause : Shenandoah GC est conçu pour minimiser les temps de pause en effectuant la plupart des travaux de récupération de place simultanément avec l'application. Cela garantit que l'application reste réactive et fonctionne bien même en cas d'utilisation intensive de la mémoire[1][3].
2. Compactage simultané : Shenandoah GC effectue un compactage simultané, ce qui signifie qu'il compacte le tas pendant l'exécution de l'application. Cela réduit le besoin de pauses complètes pour le garbage collection et garantit que le tas reste compact et efficace[1][3].
3. Indépendant de la taille du tas : les temps de pause de Shenandoah GC sont indépendants de la taille du tas. Cela signifie qu'il peut gérer de gros tas sans pauses significatives, ce qui le rend adapté aux applications nécessitant de grandes allocations de mémoire[1][3].
4. Haut débit : Shenandoah GC est conçu pour fournir un débit élevé en minimisant le temps consacré à la collecte des déchets. Cela garantit que l'application peut continuer à fonctionner efficacement même en cas d'utilisation intensive de la mémoire[1][3].
###ZGC :
1. Faible latence : ZGC est conçu pour fournir une latence extrêmement faible en minimisant le temps consacré à la collecte des ordures. Il y parvient en effectuant la plupart des travaux de récupération de place simultanément avec l'application et en utilisant une approche régionale à génération unique[2].
2. NUMA-Aware : ZGC est conçu pour être compatible NUMA, ce qui signifie qu'il peut gérer efficacement de gros tas et plusieurs cœurs de processeur. Cela garantit que le garbage collector peut tirer parti des ressources matérielles disponibles[2].
3. Haut débit : ZGC est conçu pour fournir un débit élevé en minimisant le temps consacré à la collecte des déchets. Cela garantit que l'application peut continuer à fonctionner efficacement même en cas d'utilisation intensive de la mémoire[2].
4. Fonctionnalité expérimentale : ZGC est une fonctionnalité expérimentale qui nécessite des options de ligne de commande spécifiques pour être activée. Il convient aux applications qui nécessitent des temps de pause très courts et peuvent gérer de grandes allocations de mémoire[2].
En résumé, Shenandoah et ZGC sont tous deux conçus pour fournir un garbage collection efficace et à faible latence pour les applications Java. Ils conviennent aux applications qui nécessitent un débit élevé et peuvent gérer des allocations de mémoire importantes.
Citations :[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/