A ZGC több terabájtos kupacokkal történő használata számos teljesítménykövetkezményt jelenthet:
1. Alacsony késleltetés: A ZGC-t úgy tervezték, hogy minimalizálja a szünetidőket, biztosítva, hogy az alkalmazás még nagy kupacok esetén is reagáljon. Ezt úgy éri el, hogy a legtöbb szemétgyűjtési munkát az alkalmazással párhuzamosan végzi, ami 10 ms-nál rövidebb szünetet eredményez[3][4].
2. Nagy áteresztőképesség: A ZGC-t úgy tervezték, hogy nagy áteresztőképességet biztosítson a szemétszállításra fordított idő minimalizálásával. Ez biztosítja, hogy az alkalmazás továbbra is hatékonyan tudjon futni még nagy memóriahasználat mellett is[2][4].
3. Multi-Mapping: A ZGC többleképezést használ a virtuális memória különböző tartományainak ugyanahhoz a fizikai memóriához való leképezéséhez. Ez megnövekedett memóriahasználathoz vezethet, mivel az operációs rendszer 3x nagyobb memóriahasználatot jelenthet a további leképezések miatt[1].
4. Színes mutatók: A ZGC színes mutatókat használ a metaadatok 64 bites mutatókban való tárolására. Ez további munkát jelenthet a mutatók hivatkozásának megszüntetésekor, de a többleképezési technika segít csökkenteni ezt a többletköltséget[2].
5. NUMA-Aware: A ZGC-t úgy tervezték, hogy NUMA-tudatos legyen, ami azt jelenti, hogy hatékonyan képes kezelni a nagy kupacokat és a több CPU magot. Ez biztosítja, hogy a szemétgyűjtő kihasználhassa a rendelkezésre álló hardver erőforrásokat[2][4].
6. Tuning Options: A ZGC számos hangolási opcióval rendelkezik, mint például a maximális kupacméret és az egyidejű GC szálak számának beállítása. Ezek a beállítások segíthetnek egyensúlyban tartani a memóriahasználatot és a szemétgyűjtési teljesítményt[3][4].
7. Kísérleti szolgáltatás: A ZGC egy kísérleti szolgáltatás, amelynek engedélyezéséhez speciális parancssori beállítások szükségesek. Alkalmas olyan alkalmazásokhoz, amelyek nagyon rövid szünetet igényelnek, és nagy memóriafoglalásokat tud kezelni[1][3].
Összefoglalva, a ZGC használata több terabájtos kupacokkal alacsony késleltetést, nagy átviteli sebességet és hatékony memóriakezelést biztosíthat. Azonban gondos hangolást igényel, és a többleképezés miatt megnövekedett memóriahasználathoz vezethet.
Idézetek:[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