Shenandoah a ZGC sú dva pokročilé garbage collectory navrhnuté tak, aby poskytovali efektívne garbage collection s nízkou latenciou pre Java aplikácie. Tu sú niektoré kľúčové výhody používania týchto kolektorov:
Shenandoah GC:
1. Low Pause Times: Shenandoah GC je navrhnutý tak, aby minimalizoval časy prestávok vykonávaním väčšiny prác na zber odpadu súčasne s aplikáciou. To zaisťuje, že aplikácia zostáva pohotová a funguje dobre aj pri veľkom využití pamäte[1][3].
2. Súbežné zhutňovanie: Shenandoah GC vykonáva súbežné zhutňovanie, čo znamená, že zhutňuje haldu, kým je aplikácia spustená. To znižuje potrebu úplných prestávok na zber odpadu a zaisťuje, že halda zostane kompaktná a efektívna[1][3].
3. Nezávislé od veľkosti haldy: Časy pauzy Shenandoah GC sú nezávislé od veľkosti haldy. To znamená, že dokáže spracovať veľké haldy bez výrazných prestávok, vďaka čomu je vhodný pre aplikácie, ktoré vyžadujú veľké alokácie pamäte[1][3].
4. Vysoká priepustnosť: Shenandoah GC je navrhnutý tak, aby poskytoval vysokú priepustnosť minimalizovaním času stráveného zberom odpadu. To zaisťuje, že aplikácia môže naďalej efektívne bežať aj pri veľkej spotrebe pamäte[1][3].
ZGC:
1. Nízka latencia: ZGC je navrhnutý tak, aby poskytoval extrémne nízku latenciu minimalizovaním času stráveného zberom odpadu. Dosahuje to vykonávaním väčšiny prác na zber odpadu súčasne s aplikáciou a využívaním jednogeneračného regionálneho prístupu[2].
2. NUMA-Aware: ZGC je navrhnutý tak, aby podporoval NUMA, čo znamená, že dokáže efektívne spracovať veľké hromady a viacero jadier CPU. To zaisťuje, že zberač odpadu môže využívať dostupné hardvérové prostriedky[2].
3. Vysoká priepustnosť: ZGC je navrhnutý tak, aby poskytoval vysokú priepustnosť minimalizovaním času stráveného zberom odpadu. To zaisťuje, že aplikácia môže naďalej efektívne bežať aj pri veľkom využití pamäte[2].
4. Experimentálna funkcia: ZGC je experimentálna funkcia, ktorá vyžaduje špecifické možnosti príkazového riadka na aktiváciu. Je vhodný pre aplikácie, ktoré vyžadujú veľmi krátke časy prestávok a dokážu zvládnuť veľké pridelenie pamäte[2].
Stručne povedané, Shenandoah aj ZGC sú navrhnuté tak, aby poskytovali nízku latenciu a efektívne zbieranie odpadu pre aplikácie Java. Sú vhodné pre aplikácie, ktoré vyžadujú vysokú priepustnosť a dokážu zvládnuť veľké alokácie pamäte.
Citácie:[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/