Les principaux cas d'utilisation de Shenandoah et ZGC sont :
Shenandoah GC :
1. Faible latence : Shenandoah 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.
2. Haut débit : Shenandoah 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 à s'exécuter efficacement même en cas d'utilisation intensive de la mémoire.
3. Grands tas : Shenandoah est conçu pour gérer efficacement de gros tas, ce qui le rend adapté aux applications nécessitant de grandes allocations de mémoire.
4. Allocation constante : Shenandoah convient aux applications avec allocation et utilisation constantes d'objets, car il peut gérer cela efficacement.
5. Objets plus anciens : Shenandoah convient aux applications dans lesquelles les objets sont plus anciens et où la surcharge liée à la création de nouveaux objets est faible, car elle peut gérer cela efficacement.
6. Utilisation des conteneurs : Shenandoah peut être utilisé dans des environnements conteneurisés, mais cela dépend du cas d'utilisation spécifique.
###ZGC :
1. Faible latence : ZGC 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.
2. 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 à s'exécuter efficacement même en cas d'utilisation intensive de la mémoire.
3. Grands tas : ZGC est conçu pour gérer efficacement les gros tas, ce qui le rend adapté aux applications nécessitant de grandes allocations de mémoire.
4. 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.
5. Fonctionnalité expérimentale : ZGC est une fonctionnalité expérimentale et nécessite des options de ligne de commande spécifiques pour être activée. Il convient aux applications nécessitant des temps de pause très courts et pouvant gérer de grandes allocations de mémoire.
En résumé, Shenandoah et ZGC sont tous deux conçus pour offrir une faible latence et un débit élevé, ce qui les rend adaptés aux applications nécessitant une gestion efficace de la mémoire.
Citations :[1] https://www.opsian.com/blog/aleksey-shipilev-shenandoah-concurrent-gcs/
[2] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[3] https://wiki.openjdk.org/display/shenandoah/Main
[4] https://www.diva-portal.org/smash/get/diva2:1466940/FULLTEXT01.pdf
[5] https://developers.redhat.com/articles/2024/05/28/beginners-guide-shenandoah-garbage-collector