Shenandoah ir ZGC yra du pažangūs šiukšlių rinktuvai, sukurti siekiant užtikrinti mažą delsą ir efektyvų šiukšlių surinkimą Java programoms. Štai keli pagrindiniai šių kolektorių naudojimo pranašumai:
Shenandoah GC:
1. Low Pause Times: Shenandoah GC sukurtas taip, kad būtų sumažintas pauzės laikas, atliekant daugumą šiukšlių surinkimo darbų kartu su programa. Tai užtikrina, kad programa išliktų jautri ir gerai veiktų net ir naudojant daug atminties[1][3].
2. Sutankinimas vienu metu: Shenandoah GC kartu sutankina, o tai reiškia, kad sutankina krūvą, kol programa veikia. Tai sumažina visiškų šiukšlių surinkimo pauzių poreikį ir užtikrina, kad krūva išliks kompaktiška ir efektyvi[1][3].
3. Nepriklausomai nuo krūvos dydžio: Shenandoah GC pauzės laikas nepriklauso nuo krūvos dydžio. Tai reiškia, kad jis gali apdoroti dideles krūvas be didelių pauzių, todėl tinka programoms, kurioms reikia didelės atminties paskirstymo[1][3].
4. Didelis pralaidumas: Shenandoah GC sukurtas taip, kad būtų užtikrintas didelis pralaidumas, sumažinant šiukšlių surinkimo laiką. Tai užtikrina, kad programa gali toliau efektyviai veikti net ir naudojant daug atminties[1][3].
ZGC:
1. Mažas delsos: ZGC sukurtas taip, kad būtų užtikrintas ypač mažas delsos laikas, sumažinant šiukšlių surinkimo laiką. Tai pasiekiama atlikdama daugumą šiukšlių surinkimo darbų kartu su programa ir taikydama vienos kartos, regionu pagrįstą metodą[2].
2. NUMA-Aware: ZGC sukurtas taip, kad žinotų NUMA, o tai reiškia, kad jis gali efektyviai valdyti dideles krūvas ir kelis procesoriaus branduolius. Tai užtikrina, kad šiukšlių surinkėjas gali pasinaudoti turimais techninės įrangos ištekliais[2].
3. Didelis pralaidumas: ZGC sukurtas taip, kad būtų užtikrintas didelis pralaidumas, sumažinant šiukšlių surinkimo laiką. Tai užtikrina, kad programa gali toliau efektyviai veikti net ir naudojant daug atminties[2].
4. Eksperimentinė funkcija: ZGC yra eksperimentinė funkcija, kurią norint įjungti reikia specialių komandinės eilutės parinkčių. Jis tinka programoms, kurioms reikalingas labai trumpas pauzės laikas ir kurios gali apdoroti didelius atminties paskirstymus[2].
Apibendrinant galima pasakyti, kad tiek „Shenandoah“, tiek „ZGC“ yra sukurti taip, kad „Java“ programoms būtų galima greitai ir efektyviai surinkti šiukšles. Jie tinka programoms, kurioms reikalingas didelis pralaidumas, ir gali valdyti didelius atminties paskirstymus.
Citatos:[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/