De vigtigste anvendelsesmuligheder for Shenandoah og ZGC er:
Shenandoah GC:
1. Lav latens: Shenandoah er designet til at minimere pausetider ved at udføre det meste affaldsopsamlingsarbejde samtidig med applikationen. Dette sikrer, at applikationen forbliver lydhør og yder godt selv under meget hukommelsesforbrug.
2. Høj gennemløb: Shenandoah er designet til at give høj gennemløb ved at minimere den tid, der bruges på affaldsindsamling. Dette sikrer, at applikationen kan fortsætte med at køre effektivt selv under stor hukommelsesbrug.
3. Store dynger: Shenandoah er designet til at håndtere store dynger effektivt, hvilket gør den velegnet til applikationer, der kræver store hukommelsestildelinger.
4. Konstant allokering: Shenandoah er velegnet til applikationer med konstant allokering og brug af objekter, da den kan håndtere dette effektivt.
5. Ældre objekter: Shenandoah er velegnet til applikationer, hvor objekter er ældre, og omkostningerne ved at skabe nye objekter er små, da den kan håndtere dette effektivt.
6. Anvendelse af beholdere: Shenandoah kan bruges i containermiljøer, men det afhænger af den specifikke anvendelse.
ZGC:
1. Lav latens: ZGC er designet til at minimere pausetider ved at udføre det meste affaldsopsamlingsarbejde samtidig med applikationen. Dette sikrer, at applikationen forbliver lydhør og yder godt selv under stor hukommelsesbrug.
2. Høj gennemløb: ZGC er designet til at give høj gennemløb ved at minimere den tid, der bruges på affaldsindsamling. Dette sikrer, at applikationen kan fortsætte med at køre effektivt selv under stor hukommelsesbrug.
3. Store dynger: ZGC er designet til at håndtere store dynger effektivt, hvilket gør den velegnet til applikationer, der kræver store hukommelsestildelinger.
4. NUMA-Aware: ZGC er designet til at være NUMA-bevidst, hvilket betyder, at den effektivt kan håndtere store dynger og flere CPU-kerner.
5. Eksperimentel funktion: ZGC er en eksperimentel funktion og kræver specifikke kommandolinjeindstillinger for at aktivere. Den er velegnet til applikationer, der kræver meget korte pausetider og kan håndtere store hukommelsestildelinger.
Sammenfattende er både Shenandoah og ZGC designet til at give lav latens og høj gennemløb, hvilket gør dem velegnede til applikationer, der kræver effektiv hukommelsesstyring.
Citater:[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