Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon hvad er præstationsimplikationerne ved at bruge ZGC med multi-terabyte-dynger


hvad er præstationsimplikationerne ved at bruge ZGC med multi-terabyte-dynger


Brug af ZGC med multi-terabyte-dynger kan have flere præstationsimplikationer:

1. Lav latens: ZGC er designet til at minimere pausetider, hvilket sikrer, at applikationen forbliver responsiv selv med store dynger. Den opnår dette ved at udføre det meste affaldsopsamlingsarbejde samtidig med applikationen, hvilket resulterer i pausetider på mindre end 10ms[3][4].

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[2][4].

3. Multi-mapping: ZGC bruger multi-mapping til at kortlægge forskellige områder af virtuel hukommelse til den samme fysiske hukommelse. Dette kan føre til øget hukommelsesforbrug, da operativsystemet kan rapportere 3 gange større hukommelsesforbrug på grund af de yderligere tilknytninger[1].

4. Farvede pointere: ZGC bruger farvede pointere til at gemme metadata i 64-bit pointere. Dette kan skabe yderligere arbejde ved dereferencing af pointere, men multi-mapping-teknikken hjælper med at afbøde denne overhead[2].

5. 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. Dette sikrer, at skraldeopsamleren kan drage fordel af de tilgængelige hardwareressourcer[2][4].

6. Tuning Options: ZGC har flere tuning muligheder, såsom indstilling af den maksimale heap-størrelse og antallet af samtidige GC-tråde. Disse muligheder kan hjælpe med at balancere hukommelsesforbrug og affaldsopsamlingsydelse[3][4].

7. 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[1][3].

Sammenfattende kan brug af ZGC med multi-terabyte-dynger give lav latenstid, høj gennemstrømning og effektiv hukommelsesstyring. Det kræver dog omhyggelig justering og kan føre til øget hukommelsesforbrug på grund af multi-mapping.

Citater:
[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-very-exciting/
[3] https://docs.oracle.com/da/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-deep-dive-with-exam