ZGC naudojimas su kelių terabaitų krūvomis gali turėti keletą našumo pasekmių:
1. Mažas delsos laikas: ZGC sukurtas taip, kad sumažintų pauzės laiką, užtikrinant, kad programa reaguotų net ir esant didelėms krūvoms. Tai pasiekiama atlikdama daugumą šiukšlių surinkimo darbų kartu su programa, todėl pauzės trukmė yra mažesnė nei 10 ms[3][4].
2. Didelis pralaidumas: ZGC sukurtas taip, kad būtų užtikrintas didelis pralaidumas, sumažinant šiukšlių surinkimo laiką. Tai užtikrina, kad programa gali toliau efektyviai veikti net ir naudojant daug atminties[2][4].
3. Multi-Mapping: ZGC naudoja kelių atvaizdų sudarymą, kad skirtinguose virtualiosios atminties diapazonuose būtų susieta su ta pačia fizine atmintimi. Dėl to gali padidėti atminties naudojimas, nes operacinė sistema gali pranešti apie 3 kartus didesnį atminties naudojimą dėl papildomų atvaizdų[1].
4. Spalvotos rodyklės: ZGC naudoja spalvotas rodykles metaduomenims saugoti 64 bitų rodyklėse. Tai gali sukelti papildomo darbo panaikinant nuorodas, tačiau kelių atvaizdų sudarymo technika padeda sumažinti šias išlaidas[2].
5. NUMA-Aware: ZGC sukurtas taip, kad žinotų NUMA, o tai reiškia, kad jis gali efektyviai valdyti dideles krūvas ir kelis procesoriaus branduolius. Tai užtikrina, kad šiukšlių surinkėjas gali pasinaudoti turimais techninės įrangos ištekliais[2][4].
6. Derinimo parinktys: ZGC turi keletą derinimo parinkčių, pvz., didžiausio krūvos dydžio ir lygiagrečių GC gijų skaičiaus nustatymas. Šios parinktys gali padėti subalansuoti atminties naudojimą ir šiukšlių surinkimo našumą[3][4].
7. Eksperimentinė funkcija: ZGC yra eksperimentinė funkcija, kuriai norint įjungti reikia specialių komandų eilutės parinkčių. Jis tinka programoms, kurioms reikalingas labai trumpas pauzės laikas, ir gali tvarkyti didelius atminties paskirstymus[1][3].
Apibendrinant galima pasakyti, kad naudojant ZGC su kelių terabaitų krūvomis galima užtikrinti mažą delsą, didelį pralaidumą ir efektyvų atminties valdymą. Tačiau tai reikalauja kruopštaus derinimo ir dėl kelių atvaizdavimo gali padidėti atminties naudojimas.
Citatos:[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