Shenandoah og ZGC er to avanserte søppeloppsamlere designet for å gi lav latens og effektiv søppelinnsamling for Java-applikasjoner. Her er noen viktige fordeler ved å bruke disse samlerne:
Shenandoah GC:
1. Lav pausetid: Shenandoah GC er designet for å minimere pausetider ved å utføre det meste av søppeloppsamlingsarbeidet samtidig med applikasjonen. Dette sikrer at applikasjonen forblir responsiv og yter godt selv under mye minnebruk[1][3].
2. Samtidig komprimering: Shenandoah GC utfører samtidig komprimering, som betyr at den komprimerer haugen mens applikasjonen kjører. Dette reduserer behovet for fullstendige pauser for søppelhenting og sikrer at haugen forblir kompakt og effektiv[1][3].
3. Uavhengig av haugstørrelse: Shenandoah GCs pausetider er uavhengig av haugstørrelsen. Dette betyr at den kan håndtere store hauger uten betydelige pauser, noe som gjør den egnet for applikasjoner som krever store minneallokeringer[1][3].
4. Høy gjennomstrømning: Shenandoah GC er designet for å gi høy gjennomstrømning ved å minimere tiden brukt på søppelhenting. Dette sikrer at applikasjonen kan fortsette å kjøre effektivt selv under mye minnebruk[1][3].
ZGC:
1. Lav latens: ZGC er designet for å gi ekstremt lav ventetid ved å minimere tiden brukt på søppelinnsamling. Den oppnår dette ved å utføre det meste av søppelinnsamlingsarbeidet samtidig med applikasjonen og ved å bruke en enkeltgenerasjons, regionbasert tilnærming[2].
2. NUMA-Aware: ZGC er designet for å være NUMA-bevisst, noe som betyr at den effektivt kan håndtere store hauger og flere CPU-kjerner. Dette sikrer at søppelsamleren kan dra nytte av de tilgjengelige maskinvareressursene[2].
3. Høy gjennomstrømning: ZGC er designet for å gi høy gjennomstrømning ved å minimere tiden brukt på søppelhenting. Dette sikrer at applikasjonen kan fortsette å kjøre effektivt selv under mye minnebruk[2].
4. Eksperimentell funksjon: ZGC er en eksperimentell funksjon som krever spesifikke kommandolinjealternativer for å aktivere. Den er egnet for applikasjoner som krever svært korte pausetider og kan håndtere store minneallokeringer[2].
Oppsummert er både Shenandoah og ZGC designet for å gi lav latens og effektiv søppelinnsamling for Java-applikasjoner. De er egnet for applikasjoner som krever høy gjennomstrømning og kan håndtere store minneallokeringer.
Sitater:[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/