Izmantojot ZGC ar vairāku terabaitu kaudzēm, var būt vairākas darbības ietekmes:
1. Zems latentums: ZGC ir izstrādāts, lai samazinātu pauzes laiku, nodrošinot, ka lietojumprogramma joprojām reaģē pat ar lielām kaudzēm. Tas tiek panākts, veicot lielāko daļu atkritumu savākšanas darbu vienlaikus ar lietojumprogrammu, kā rezultātā pauzes laiks ir mazāks par 10 ms[3][4].
2. Augsta caurlaidspēja: ZGC ir paredzēts, lai nodrošinātu augstu caurlaidspēju, samazinot atkritumu savākšanai pavadīto laiku. Tas nodrošina, ka lietojumprogramma var turpināt darboties efektīvi pat tad, ja tiek izmantota liela atmiņa[2][4].
3. Multi-Mapping: ZGC izmanto vairāku kartēšanu, lai kartētu dažādus virtuālās atmiņas diapazonus vienā fiziskajā atmiņā. Tas var palielināt atmiņas lietojumu, jo operētājsistēma var ziņot par 3x lielāku atmiņas lietojumu papildu kartējumu dēļ[1].
4. Krāsainie rādītāji: ZGC izmanto krāsainas norādes, lai saglabātu metadatus 64 bitu rādītājos. Tas var radīt papildu darbu, atceļot norādes, taču vairāku kartēšanas paņēmiens palīdz mazināt šīs papildu izmaksas[2].
5. NUMA-Aware: ZGC ir izstrādāts tā, lai tas atbilstu NUMA, kas nozīmē, ka tas var efektīvi apstrādāt lielas kaudzes un vairākus CPU kodolus. Tas nodrošina, ka atkritumu savācējs var izmantot pieejamos aparatūras resursus[2][4].
6. Noregulēšanas opcijas: ZGC ir vairākas regulēšanas iespējas, piemēram, maksimālā kaudzes izmēra un vienlaicīgo GC pavedienu skaita iestatīšana. Šīs opcijas var palīdzēt līdzsvarot atmiņas izmantošanu un atkritumu savākšanas veiktspēju[3][4].
7. Eksperimentālā funkcija: ZGC ir eksperimentāla funkcija, un, lai to iespējotu, ir nepieciešamas īpašas komandrindas opcijas. Tas ir piemērots lietojumprogrammām, kurām nepieciešams ļoti īss pauzes laiks, un tās var apstrādāt lielus atmiņas piešķīrumus[1][3].
Rezumējot, ZGC izmantošana ar vairāku terabaitu kaudzēm var nodrošināt zemu latentumu, lielu caurlaidspēju un efektīvu atmiņas pārvaldību. Tomēr tas prasa rūpīgu regulēšanu un var palielināt atmiņas lietojumu vairāku kartējumu dēļ.
Citāts:[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