Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon milyen előnyökkel jár a Shenandoah vagy a ZGC szemétgyűjtésre való használata


milyen előnyökkel jár a Shenandoah vagy a ZGC szemétgyűjtésre való használata


A Shenandoah és a ZGC két fejlett szemétgyűjtő, amelyek alacsony késleltetésű és hatékony szemétgyűjtést biztosítanak a Java alkalmazások számára. Íme néhány fő előnye a gyűjtők használatának:

Shenandoah GC:

1. Alacsony szünetidők: A Shenandoah GC-t úgy tervezték, hogy minimalizálja a szünetidőket, mivel a legtöbb szemétszállítási munkát az alkalmazással egyidejűleg végzi. Ez biztosítja, hogy az alkalmazás érzékeny maradjon, és még nagy memóriahasználat mellett is jól működjön[1][3].

2. Egyidejű tömörítés: A Shenandoah GC párhuzamos tömörítést hajt végre, ami azt jelenti, hogy az alkalmazás futása közben tömöríti a kupacot. Ez csökkenti a teljes szemétgyűjtési szünetek szükségességét, és biztosítja, hogy a kupac kompakt és hatékony maradjon[1][3].

3. Független a kupac méretétől: A Shenandoah GC szünetideje független a kupac méretétől. Ez azt jelenti, hogy jelentősebb szünetek nélkül képes kezelni a nagy kupacokat, így alkalmas a nagy memóriafoglalást igénylő alkalmazásokhoz[1][3].

4. Nagy áteresztőképesség: A Shenandoah GC-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[1][3].

ZGC:

1. Alacsony késleltetés: A ZGC-t úgy tervezték, hogy rendkívül alacsony késleltetést biztosítson azáltal, hogy minimalizálja a szemétszállításra fordított időt. Ezt úgy éri el, hogy a legtöbb szemétszállítási munkát az alkalmazással párhuzamosan végzi, és egy generációs, régióalapú megközelítést alkalmaz[2].

2. 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].

3. Nagy áteresztőképesség: A ZGC-t úgy tervezték, hogy nagy áteresztőképességet biztosítson azáltal, hogy minimálisra csökkenti a szemétszállításra fordított időt. Ez biztosítja, hogy az alkalmazás továbbra is hatékonyan tudjon futni még nagy memóriahasználat mellett is[2].

4. 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 is képesek kezelni[2].

Összefoglalva, mind a Shenandoah, mind a ZGC célja, hogy alacsony késleltetésű és hatékony szemétgyűjtést biztosítson a Java alkalmazások számára. Alkalmasak olyan alkalmazásokhoz, amelyek nagy átviteli sebességet igényelnek, és képesek kezelni a nagy memóriafoglalásokat.

Idézetek:
[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/