Å bruke ZGC med multi-terabyte hauger kan ha flere ytelsesimplikasjoner:
1. Lav latens: ZGC er designet for å minimere pausetider, noe som sikrer at applikasjonen forblir lydhør selv med store hauger. Det oppnår dette ved å utføre de fleste søppelinnsamlingsarbeid samtidig med applikasjonen, noe som resulterer i pausetider på mindre enn 10 ms [3] [4].
2. Høyt gjennomstrømning: ZGC er designet for å gi høy gjennomstrømning ved å minimere tiden brukt på søppelsamling. Dette sikrer at applikasjonen kan fortsette å kjøre effektivt selv under tungt minnebruk [2] [4].
3. Multi-kartlegging: ZGC bruker multimapping for å kartlegge forskjellige områder av virtuelt minne til samme fysiske minne. Dette kan føre til økt minnebruk, ettersom operativsystemet kan rapportere 3x større minnebruk på grunn av de ekstra kartleggingene [1].
4. Fargede pekere: ZGC bruker fargede pekere for å lagre metadata i 64-biters pekere. Dette kan skape ytterligere arbeid når du henviser til pekere, men multimappingsteknikken hjelper til med å dempe dette overhead [2].
5. Numa-Aware: ZGC er designet for å være Numa-Aware, noe som betyr at den effektivt kan håndtere store hauger og flere CPU-kjerner. Dette sikrer at søppelsamleren kan dra nytte av tilgjengelige maskinvareressurser [2] [4].
6. Tuningalternativer: ZGC har flere innstillingsmuligheter, for eksempel å sette maksimal haugestørrelse og antall samtidige GC -tråder. Disse alternativene kan hjelpe til med å balansere hukommelsesbruk og ytelse av søppelinnsamling [3] [4].
7. Eksperimentell funksjon: ZGC er en eksperimentell funksjon og krever spesifikke kommandolinjealternativer for å aktivere. Det er egnet for applikasjoner som krever veldig korte pausetider og kan håndtere store minnetildelinger [1] [3].
Oppsummert kan bruk av ZGC med multi-terabyte hauger gi lav latens, høy gjennomstrømning og effektiv minnestyring. Imidlertid krever det nøye innstilling og kan føre til økt hukommelsesbruk på grunn av multimartlegging.
Sitasjoner:[1] https://stackoverflow.com/questions/62926652/the-java-zgc-garbage-collector-uses-a-lot-of-memory
[2] https://www.opsian.com/blog/javas-new-zgc-is-ty-sciting/
[3] https://docs.oracle.com/en/java/javase/11/gctuning/z-garbage-collector1.html
[4] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[5] https://dzone.com/articles/java-z-garbage-collector-zgc-a-a-pive-dive-with--Exam