Het gebruik van ZGC met hopen met meerdere terabyte kan verschillende prestaties hebben:
1. Lage latentie: ZGC is ontworpen om pauzeren te minimaliseren, zodat de applicatie responsief blijft, zelfs met grote hopen. Het bereikt dit door tegelijkertijd het meeste afvalinzamelingswerk uit te voeren met de toepassing, wat resulteert in pauzeren van minder dan 10 ms [3] [4].
2. Hoge doorvoer: ZGC is ontworpen om een hoge doorvoer te bieden door de tijd die wordt besteed aan het verzamelen van afval te minimaliseren. Dit zorgt ervoor dat de toepassing efficiënt kan blijven werken, zelfs onder zwaar geheugengebruik [2] [4].
3. Multi-mapping: ZGC gebruikt multi-mapping om verschillende reeksen virtueel geheugen in kaart te brengen aan hetzelfde fysieke geheugen. Dit kan leiden tot verhoogd geheugengebruik, omdat het besturingssysteem 3x groter geheugengebruik kan rapporteren vanwege de extra toewijzingen [1].
4. Gekleurde aanwijzingen: ZGC gebruikt gekleurde aanwijzingen om metagegevens op te slaan in 64-bit aanwijzingen. Dit kan extra werk creëren bij het dereferencing van aanwijzingen, maar de multi-mappingtechniek helpt deze overhead te verminderen [2].
5. Numa-Aware: ZGC is ontworpen om Numa-bewust te zijn, wat betekent dat het efficiënt grote hopen en meerdere CPU-kernen kan verwerken. Dit zorgt ervoor dat de afvalcollector kan profiteren van de beschikbare hardwarebronnen [2] [4].
6. Tuningopties: ZGC heeft verschillende afstemmingsopties, zoals het instellen van de maximale heapgrootte en het aantal gelijktijdige GC -threads. Deze opties kunnen helpen bij het in evenwicht brengen van geheugengebruik en afvalcollectieprestaties [3] [4].
7. 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 geheugenallocaties kunnen verwerken [1] [3].
Samenvattend kan het gebruik van ZGC met hangen met meerdere terabyte lage latentie, hoge doorvoer en efficiënt geheugenbeheer bieden. Het vereist echter zorgvuldige afstemming en kan leiden tot verhoogd geheugengebruik als gevolg van multi-mapping.
Citaten:[1] https://stackoverflow.com/questions/62926652/the-java-zgc-garbage-collector-se-a-lot-of-memory
[2] https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/
[3] https://docs.oracle.com/en/java/javase/11/gctuning/z-garbage-collector1.html
[4] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[5] https://dzone.com/articles/java-z-garbage-collector-zgc-a-deep-dive-with-exam