Hlavné prípady použitia Shenandoah a ZGC sú:
Shenandoah GC:
1. Nízka latencia: Shenandoah je navrhnutý tak, aby minimalizoval časy pauzy 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.
2. Vysoká priepustnosť: Shenandoah 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.
3. Veľké haldy: Shenandoah je navrhnutý tak, aby efektívne zvládal veľké haldy, vďaka čomu je vhodný pre aplikácie, ktoré vyžadujú veľké pridelenie pamäte.
4. Constant Allocation: Shenandoah je vhodný pre aplikácie s neustálym prideľovaním a využívaním objektov, pretože to dokáže efektívne zvládnuť.
5. Staršie objekty: Shenandoah je vhodný pre aplikácie, kde sú objekty staršie a réžia na vytváranie nových objektov je malá, pretože to dokáže efektívne zvládnuť.
6. Použitie kontajnera: Shenandoah možno použiť v kontajnerových prostrediach, ale závisí to od konkrétneho prípadu použitia.
ZGC:
1. Nízka latencia: ZGC je navrhnutý tak, aby minimalizoval časy pauzy 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.
2. 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 bežať efektívne aj pri veľkom využití pamäte.
3. Veľké haldy: ZGC je navrhnutý tak, aby efektívne zvládal veľké haldy, vďaka čomu je vhodný pre aplikácie, ktoré vyžadujú veľké pridelenie pamäte.
4. NUMA-Aware: ZGC je navrhnutý tak, aby podporoval NUMA, čo znamená, že dokáže efektívne spracovať veľké hromady a viacero jadier CPU.
5. Experimentálna funkcia: ZGC je experimentálna funkcia a vyžaduje špecifické možnosti príkazového riadka na aktiváciu. Je vhodný pre aplikácie, ktoré vyžadujú veľmi krátke prestávky a dokážu zvládnuť veľké alokácie pamäte.
Stručne povedané, Shenandoah aj ZGC sú navrhnuté tak, aby poskytovali nízku latenciu a vysokú priepustnosť, vďaka čomu sú vhodné pre aplikácie, ktoré vyžadujú efektívnu správu pamäte.
Citácie:[1] https://www.opsian.com/blog/aleksey-shipilev-shenandoah-concurrent-gcs/
[2] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[3] https://wiki.openjdk.org/display/shenandoah/Main
[4] https://www.diva-portal.org/smash/get/diva2:1466940/FULLTEXT01.pdf
[5] https://developers.redhat.com/articles/2024/05/28/beginners-guide-shenandoah-garbage-collector