ZGC:n käytöllä useiden teratavujen pintojen kanssa voi olla useita suorituskykyvaikutuksia:
1. Low Latency: ZGC on suunniteltu minimoimaan taukoajat varmistaen, että sovellus pysyy reagoivana myös suurilla pinoilla. Se saavuttaa tämän suorittamalla useimmat roskien keräystyöt samanaikaisesti sovelluksen kanssa, mikä johtaa alle 10 ms:n taukoaikoihin[3][4].
2. High Throughput: ZGC on suunniteltu tarjoamaan korkea suorituskyky minimoimalla jätteiden keräämiseen käytetyn ajan. Tämä varmistaa, että sovellus voi jatkaa toimintaansa tehokkaasti myös kovassa muistinkäytössä[2][4].
3. Multi-Mapping: ZGC käyttää multimappausta kartoittaakseen virtuaalimuistin eri alueet samaan fyysiseen muistiin. Tämä voi johtaa lisääntyneeseen muistin käyttöön, koska käyttöjärjestelmä voi raportoida 3x suuremman muistin käytön lisäkartoitusten vuoksi[1].
4. Värilliset osoittimet: ZGC käyttää värillisiä osoittimia metatietojen tallentamiseen 64-bittisiin osoittimiin. Tämä voi aiheuttaa lisätyötä osoittimien viittausten poistamisessa, mutta monikartoitustekniikka auttaa vähentämään tätä ylimääräistä kustannuksia[2].
5. NUMA-Aware: ZGC on suunniteltu NUMA-tietoiseksi, mikä tarkoittaa, että se pystyy käsittelemään tehokkaasti suuria kasoja ja useita prosessoriytimiä. Tämä varmistaa, että roskankerääjä voi hyödyntää käytettävissä olevia laitteistoresursseja[2][4].
6. Viritysvaihtoehdot: ZGC:llä on useita viritysvaihtoehtoja, kuten keon enimmäiskoon ja samanaikaisten GC-säikeiden lukumäärän asettaminen. Nämä vaihtoehdot voivat auttaa tasapainottamaan muistin käyttöä ja roskien keräämistä[3][4].
7. Kokeellinen ominaisuus: ZGC on kokeellinen ominaisuus, jonka käyttöönotto edellyttää erityisiä komentoriviasetuksia. Se sopii sovelluksiin, jotka vaativat erittäin lyhyitä taukoaikoja ja voivat käsitellä suuria muistivarauksia[1][3].
Yhteenvetona voidaan todeta, että ZGC:n käyttö useiden teratavujen kasojen kanssa voi tarjota alhaisen latenssin, suuren suorituskyvyn ja tehokkaan muistinhallinnan. Se vaatii kuitenkin huolellista viritystä ja voi lisätä muistin käyttöä monikartoituksen vuoksi.
Lainaukset:[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/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-deep-dive-with-exam