Shenandoah ja ZGC ovat kaksi edistyksellistä roskakeräystä, jotka on suunniteltu tarjoamaan matalan viiveen ja tehokkaan roskienkeruun Java-sovelluksille. Tässä on joitain näiden keräilijöiden käytön tärkeimpiä etuja:
Shenandoah GC:
1. Lyhät taukoajat: Shenandoah GC on suunniteltu minimoimaan taukoajat suorittamalla useimmat jätteenkeräystyöt samanaikaisesti sovelluksen kanssa. Tämä varmistaa, että sovellus pysyy reagoivana ja toimii hyvin myös kovassa muistinkäytössä[1][3].
2. Samanaikainen tiivistys: Shenandoah GC suorittaa samanaikaisen tiivistyksen, mikä tarkoittaa, että se tiivistää kasan sovelluksen ollessa käynnissä. Tämä vähentää täydellisten jätteenkeräystaukojen tarvetta ja varmistaa, että kasa pysyy kompaktina ja tehokkaana[1][3].
3. Riippumaton keon koosta: Shenandoah GC:n taukoajat ovat riippumattomia keon koosta. Tämä tarkoittaa, että se pystyy käsittelemään suuria kasoja ilman merkittäviä taukoja, joten se sopii sovelluksiin, jotka vaativat suuria muistivarauksia[1][3].
4. Suuri suorituskyky: Shenandoah GC on suunniteltu tarjoamaan korkea suorituskyky minimoimalla jätteiden keräämiseen käytetyn ajan. Tämä varmistaa, että sovellus voi jatkaa toimintaansa tehokkaasti myös kovassa muistinkäytössä[1][3].
ZGC:
1. Low Latency: ZGC on suunniteltu tarjoamaan erittäin alhainen latenssi minimoimalla jätteiden keräämiseen käytetyn ajan. Se saavuttaa tämän suorittamalla suurimman osan jätteenkeräystöistä samanaikaisesti sovelluksen kanssa ja käyttämällä yhden sukupolven aluekohtaista lähestymistapaa[2].
2. NUMA-Aware: ZGC on suunniteltu NUMA-tietoiseksi, mikä tarkoittaa, että se pystyy käsittelemään tehokkaasti suuria kasoja ja useita prosessoriytimiä. Tämä varmistaa, että jätteenkerääjä voi hyödyntää käytettävissä olevia laitteistoresursseja[2].
3. High Throughput: ZGC on suunniteltu tarjoamaan korkea suorituskyky minimoimalla jätteiden keräämiseen käytetyn ajan. Tämä varmistaa, että sovellus voi jatkaa toimintaansa tehokkaasti myös kovassa muistinkäytössä[2].
4. Kokeellinen ominaisuus: ZGC on kokeellinen ominaisuus, jonka käyttöönotto edellyttää erityisiä komentoriviasetuksia. Se sopii sovelluksiin, jotka vaativat erittäin lyhyitä taukoaikoja ja voivat käsitellä suuria muistivarauksia[2].
Yhteenvetona voidaan todeta, että sekä Shenandoah että ZGC on suunniteltu tarjoamaan vähän latenssia ja tehokasta roskienkeruuta Java-sovelluksille. Ne sopivat sovelluksiin, jotka vaativat suurta suorituskykyä ja pystyvät käsittelemään suuria muistivarauksia.
Lainaukset:[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/