Uporaba ZGC z večterabajtnimi kopicami ima lahko več posledic za zmogljivost:
1. Nizka zakasnitev: ZGC je zasnovan tako, da minimizira čase premora in zagotavlja, da aplikacija ostane odzivna tudi z velikimi kopicami. To doseže tako, da večino dela zbiranja smeti izvaja sočasno z aplikacijo, zaradi česar so časi premora krajši od 10 ms[3][4].
2. Visoka prepustnost: ZGC je zasnovan tako, da zagotavlja visoko prepustnost z zmanjšanjem časa, porabljenega za zbiranje smeti. To zagotavlja, da lahko aplikacija še naprej učinkovito deluje tudi pri veliki uporabi pomnilnika[2][4].
3. Multi-Mapping: ZGC uporablja večkratno preslikavo za preslikavo različnih obsegov virtualnega pomnilnika v isti fizični pomnilnik. To lahko privede do povečane porabe pomnilnika, saj lahko operacijski sistem poroča o 3x večji uporabi pomnilnika zaradi dodatnih preslikav[1].
4. Barvni kazalci: ZGC uporablja barvne kazalce za shranjevanje metapodatkov v 64-bitnih kazalcih. To lahko povzroči dodatno delo pri dereferenciranju kazalcev, vendar tehnika večkratnega preslikave pomaga ublažiti te stroške [2].
5. NUMA-Aware: ZGC je zasnovan za NUMA-aware, kar pomeni, da lahko učinkovito obravnava velike kopice in več jeder CPE. To zagotavlja, da lahko zbiralec smeti izkoristi razpoložljive vire strojne opreme[2][4].
6. Možnosti nastavitve: ZGC ima več možnosti nastavitve, kot je nastavitev največje velikosti kopice in števila sočasnih niti GC. Te možnosti lahko pomagajo uravnotežiti uporabo pomnilnika in zmogljivost zbiranja smeti[3][4].
7. Poskusna funkcija: ZGC je eksperimentalna funkcija in zahteva posebne možnosti ukazne vrstice za omogočanje. Primeren je za aplikacije, ki zahtevajo zelo kratke premore in lahko obravnavajo velike dodelitve pomnilnika[1][3].
Če povzamemo, uporaba ZGC z večterabajtnimi kopicami lahko zagotovi nizko zakasnitev, visoko prepustnost in učinkovito upravljanje pomnilnika. Vendar pa zahteva skrbno nastavitev in lahko povzroči večjo porabo pomnilnika zaradi večkratnega preslikave.
Citati:[1] https://stackoverflow.com/questions/62926652/the-java-zgc-garbage-collector-uses-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