Shenandoah ja ZGC on kaks täiustatud prügikogujat, mis on loodud pakkuma Java rakenduste jaoks madala latentsusajaga ja tõhusat prügikogumist. Siin on mõned nende kollektsionääride kasutamise peamised eelised:
Shenandoah GC:
1. Madalad pausiajad: Shenandoah GC on loodud pausiaegade minimeerimiseks, teostades enamiku prügikoristustöödest samaaegselt rakendusega. See tagab, et rakendus jääb tundlikuks ja toimib hästi ka suure mälukasutuse korral[1][3].
2. Samaaegne tihendamine: Shenandoah GC teostab samaaegset tihendamist, mis tähendab, et see tihendab hunniku rakenduse töötamise ajal. See vähendab vajadust täielike prügikoristuspauside järele ning tagab, et hunnik jääb kompaktseks ja tõhusaks[1][3].
3. Sõltumatu kuhja suurusest: Shenandoah GC pausiajad ei sõltu kuhja suurusest. See tähendab, et see saab hakkama suurte hunnikutega ilma oluliste pausideta, mistõttu sobib see rakendustele, mis nõuavad suuri mälueraldisi[1][3].
4. Kõrge läbilaskevõime: Shenandoah GC on loodud suure läbilaskevõime tagamiseks, minimeerides prügikoristusele kuluvat aega. See tagab, et rakendus jätkab tõhusat töötamist ka suure mälukasutuse korral[1][3].
ZGC:
1. Madal latentsusaeg: ZGC on loodud pakkuma äärmiselt madalat latentsust, minimeerides prügikoristusele kuluvat aega. See saavutatakse, teostades enamiku prügikoristustöödest samaaegselt rakendusega ja kasutades ühe põlvkonna piirkonnapõhist lähenemisviisi[2].
2. NUMA-Aware: ZGC on loodud olema NUMA-teadlik, mis tähendab, et see saab tõhusalt hakkama suurte hunnikute ja mitme protsessori tuumaga. See tagab, et prügikorjaja saab olemasolevaid riistvararessursse ära kasutada[2].
3. Kõrge läbilaskevõime: ZGC on loodud suure läbilaskevõime tagamiseks, minimeerides prügikoristusele kuluvat aega. See tagab, et rakendus jätkab tõhusat töötamist ka suure mälukasutuse korral[2].
4. Katsefunktsioon: ZGC on eksperimentaalne funktsioon, mille lubamiseks on vaja konkreetseid käsurea valikuid. See sobib rakendustele, mis nõuavad väga lühikest pausi ja saavad hakkama suurte mälueraldistega[2].
Kokkuvõttes on nii Shenandoah kui ka ZGC loodud pakkuma Java rakenduste jaoks madala latentsusajaga ja tõhusat prügikoristust. Need sobivad rakendustele, mis nõuavad suurt läbilaskevõimet ja saavad hakkama suurte mälueraldistega.
Tsitaadid:[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/