De belangrijkste gebruiksscenario's voor Shenandoah en ZGC zijn:
Shenandoah GC:
1. Lage latentie: Shenandoah is ontworpen om pauzetijden te minimaliseren door de meeste garbagecollection-werkzaamheden gelijktijdig met de applicatie uit te voeren. Dit zorgt ervoor dat de applicatie responsief blijft en goed presteert, zelfs bij zwaar geheugengebruik.
2. Hoge verwerkingscapaciteit: Shenandoah is ontworpen om een hoge verwerkingscapaciteit te bieden door de tijd die wordt besteed aan het ophalen van afval te minimaliseren. Dit zorgt ervoor dat de applicatie efficiënt kan blijven werken, zelfs bij zwaar geheugengebruik.
3. Grote heaps: Shenandoah is ontworpen om grote heaps efficiënt te verwerken, waardoor het geschikt is voor toepassingen die grote geheugentoewijzingen vereisen.
4. Constante toewijzing: Shenandoah is geschikt voor toepassingen met constante toewijzing en gebruik van objecten, omdat het dit efficiënt kan afhandelen.
5. Oudere objecten: Shenandoah is geschikt voor toepassingen waarbij objecten ouder zijn en de overhead van het maken van nieuwe objecten klein is, omdat het dit efficiënt kan verwerken.
6. Containergebruik: Shenandoah kan worden gebruikt in containeromgevingen, maar dit hangt af van het specifieke gebruiksscenario.
ZGC:
1. Lage latentie: ZGC is ontworpen om pauzetijden te minimaliseren door de meeste garbagecollection-werkzaamheden gelijktijdig met de applicatie uit te voeren. Dit zorgt ervoor dat de applicatie responsief blijft en goed presteert, zelfs bij zwaar geheugengebruik.
2. Hoge verwerkingscapaciteit: ZGC is ontworpen om een hoge verwerkingscapaciteit te bieden door de tijd die aan afvalinzameling wordt besteed tot een minimum te beperken. Dit zorgt ervoor dat de applicatie efficiënt kan blijven werken, zelfs bij zwaar geheugengebruik.
3. Grote heaps: ZGC is ontworpen om grote heaps efficiënt te verwerken, waardoor het geschikt is voor toepassingen die grote geheugentoewijzingen vereisen.
4. NUMA-bewust: ZGC is ontworpen om NUMA-bewust te zijn, wat betekent dat het efficiënt grote hoeveelheden en meerdere CPU-kernen kan verwerken.
5. Experimentele functie: ZGC is een experimentele functie en vereist specifieke opdrachtregelopties om in te schakelen. Het is geschikt voor toepassingen die zeer korte pauzetijden vereisen en grote geheugentoewijzingen aankunnen.
Samenvattend zijn zowel Shenandoah als ZGC ontworpen om een lage latentie en hoge doorvoer te bieden, waardoor ze geschikt zijn voor toepassingen die efficiënt geheugenbeheer vereisen.
Citaties:[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