De viktigste brukstilfellene for Shenandoah og ZGC er:
Shenandoah GC:
1. Lav ventetid: Shenandoah 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.
2. Høy gjennomstrømning: Shenandoah 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.
3. Store hauger: Shenandoah er designet for å håndtere store hauger effektivt, noe som gjør den egnet for applikasjoner som krever store minneallokeringer.
4. Konstant allokering: Shenandoah er egnet for applikasjoner med konstant allokering og bruk av objekter, da den kan håndtere dette effektivt.
5. Eldre objekter: Shenandoah er egnet for applikasjoner der objekter er eldre og kostnadene ved å lage nye objekter er små, siden den kan håndtere dette effektivt.
6. Beholderbruk: Shenandoah kan brukes i containeriserte miljøer, men det avhenger av den spesifikke brukssaken.
ZGC:
1. Lav ventetid: ZGC 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.
2. 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.
3. Store hauger: ZGC er designet for å håndtere store hauger effektivt, noe som gjør den egnet for applikasjoner som krever store minneallokeringer.
4. 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.
5. Eksperimentell funksjon: ZGC er en eksperimentell funksjon og krever spesifikke kommandolinjealternativer for å aktivere. Den er egnet for applikasjoner som krever svært korte pausetider og kan håndtere store minneallokeringer.
Oppsummert er både Shenandoah og ZGC designet for å gi lav ventetid og høy gjennomstrømning, noe som gjør dem egnet for applikasjoner som krever effektiv minneadministrasjon.
Sitater:[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