Shenandoah en ZGC zijn twee geavanceerde garbage collectors die zijn ontworpen om een efficiënte garbagecollection met lage latentie voor Java-applicaties te bieden. Hier zijn enkele belangrijke voordelen van het gebruik van deze verzamelprogramma's:
Shenandoah GC:
1. Lage pauzetijden: Shenandoah GC is ontworpen om pauzetijden te minimaliseren door het meeste afvalinzamelingswerk gelijktijdig met de applicatie uit te voeren. Dit zorgt ervoor dat de applicatie responsief blijft en goed presteert, zelfs bij zwaar geheugengebruik[1][3].
2. Gelijktijdige compactie: Shenandoah GC voert gelijktijdige compactie uit, wat betekent dat de heap wordt gecomprimeerd terwijl de applicatie actief is. Dit vermindert de noodzaak van volledige pauzes voor het ophalen van afval en zorgt ervoor dat de hoop compact en efficiënt blijft[1][3].
3. Onafhankelijk van de heapgrootte: de pauzetijden van Shenandoah GC zijn onafhankelijk van de heapgrootte. Dit betekent dat het grote hoeveelheden geheugen kan verwerken zonder noemenswaardige pauzes, waardoor het geschikt is voor toepassingen die grote geheugentoewijzingen vereisen[1][3].
4. Hoge verwerkingscapaciteit: Shenandoah GC 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[1][3].
ZGC:
1. Lage latentie: ZGC is ontworpen om extreem lage latentie te bieden door de tijd die wordt besteed aan het verzamelen van afval te minimaliseren. Dit wordt bereikt door het meeste afvalinzamelingswerk gelijktijdig met de applicatie uit te voeren en door gebruik te maken van een regiogebaseerde benadering van één generatie[2].
2. NUMA-bewust: ZGC is ontworpen om NUMA-bewust te zijn, wat betekent dat het efficiënt grote hoeveelheden en meerdere CPU-kernen kan verwerken. Dit zorgt ervoor dat de garbage collector kan profiteren van de beschikbare hardwarebronnen[2].
3. 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[2].
4. Experimentele functie: ZGC is een experimentele functie waarvoor specifieke opdrachtregelopties nodig zijn om in te schakelen. Het is geschikt voor toepassingen die zeer korte pauzetijden vereisen en grote geheugentoewijzingen aankunnen[2].
Samenvattend zijn zowel Shenandoah als ZGC ontworpen om een efficiënte garbagecollection met lage latentie voor Java-applicaties te bieden. Ze zijn geschikt voor toepassingen die een hoge doorvoer vereisen en grote geheugentoewijzingen aankunnen.
Citaties:[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/