Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon jaké jsou výhody použití Shenandoah nebo ZGC pro sběr odpadu


jaké jsou výhody použití Shenandoah nebo ZGC pro sběr odpadu


Shenandoah a ZGC jsou dva pokročilé garbage collectory navržené tak, aby poskytovaly nízkou latenci a efektivní garbage collection pro Java aplikace. Zde jsou některé klíčové výhody používání těchto kolektorů:

Shenandoah GC:

1. Nízká doba pauzy: Shenandoah GC je navržen tak, aby minimalizoval doby pauzy tím, že většinu prací na sběru odpadu provádí souběžně s aplikací. To zajišťuje, že aplikace zůstane responzivní a funguje dobře i při velkém využití paměti[1][3].

2. Souběžné zhutňování: Shenandoah GC provádí souběžné zhutňování, což znamená, že komprimuje haldu, když je aplikace spuštěna. To snižuje potřebu úplných pauz pro sběr odpadu a zajišťuje, že halda zůstane kompaktní a efektivní[1][3].

3. Nezávislé na velikosti haldy: Časy pauz Shenandoah GC jsou nezávislé na velikosti haldy. To znamená, že zvládne velké hromady bez výrazných přestávek, takže je vhodný pro aplikace, které vyžadují velké alokace paměti[1][3].

4. Vysoká propustnost: Shenandoah GC je navržen tak, aby poskytoval vysokou propustnost minimalizací času stráveného sběrem odpadu. To zajišťuje, že aplikace může nadále efektivně běžet i při velkém využití paměti[1][3].

ZGC:

1. Nízká latence: ZGC je navržen tak, aby poskytoval extrémně nízkou latenci tím, že minimalizuje čas strávený sběrem odpadu. Dosahuje toho prováděním většiny prací na sběru odpadu souběžně s aplikací a použitím jednogeneračního přístupu založeného na regionech[2].

2. NUMA-Aware: ZGC je navrženo tak, aby podporovalo NUMA, což znamená, že dokáže efektivně zvládnout velké hromady a více jader CPU. To zajišťuje, že garbage collector může využívat dostupné hardwarové prostředky[2].

3. Vysoká propustnost: ZGC je navržen tak, aby poskytoval vysokou propustnost minimalizací času stráveného sběrem odpadu. To zajišťuje, že aplikace může nadále efektivně běžet i při velkém využití paměti[2].

4. Experimentální funkce: ZGC je experimentální funkce, která k aktivaci vyžaduje specifické možnosti příkazového řádku. Je vhodný pro aplikace, které vyžadují velmi krátké pauzy a zvládnou velké alokace paměti[2].

Stručně řečeno, Shenandoah i ZGC jsou navrženy tak, aby poskytovaly nízkou latenci a efektivní shromažďování odpadků pro aplikace Java. Jsou vhodné pro aplikace, které vyžadují vysokou propustnost a zvládnou velké alokace paměti.

Citace:
[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/