Shenandoah un ZGC ir divi uzlaboti atkritumu savācēji, kas izstrādāti, lai Java lietojumprogrammām nodrošinātu zemu latentumu un efektīvu atkritumu savākšanu. Šeit ir dažas galvenās šo kolektoru izmantošanas priekšrocības:
Shenandoah GC:
1. Zems pauzes laiks: Shenandoah GC ir paredzēts, lai samazinātu pauzes laiku, veicot lielāko daļu atkritumu savākšanas darbu vienlaikus ar lietojumprogrammu. Tas nodrošina, ka lietojumprogramma joprojām ir atsaucīga un labi darbojas pat intensīvas atmiņas izmantošanas gadījumā[1][3].
2. Vienlaicīga blīvēšana: Shenandoah GC veic vienlaicīgu blīvēšanu, kas nozīmē, ka tas sablīvē kaudzi, kamēr lietojumprogramma darbojas. Tas samazina nepieciešamību pēc pilnām atkritumu savākšanas pauzēm un nodrošina, ka kaudze paliek kompakta un efektīva[1][3].
3. Neatkarīgi no kaudzes lieluma: Shenandoah GC pauzes laiki nav atkarīgi no kaudzes lieluma. Tas nozīmē, ka tas var apstrādāt lielas kaudzes bez ievērojamām pauzēm, padarot to piemērotu lietojumprogrammām, kurām nepieciešams liels atmiņas piešķīrums[1][3].
4. Augsta caurlaidspēja: Shenandoah GC ir izstrādāts tā, 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[1][3].
ZGC:
1. Zems latentums: ZGC ir izstrādāts, lai nodrošinātu ārkārtīgi zemu latentumu, samazinot atkritumu savākšanai pavadīto laiku. Tas tiek panākts, veicot lielāko daļu atkritumu savākšanas darbu vienlaikus ar lietojumprogrammu un izmantojot vienas paaudzes, uz reģionu balstītu pieeju[2].
2. 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].
3. Augsta caurlaidspēja: ZGC ir izstrādā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 intensīvas atmiņas izmantošanas gadījumā[2].
4. Eksperimentālā funkcija: ZGC ir eksperimentāla funkcija, kuras iespējotai nepieciešamas noteiktas 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[2].
Rezumējot, gan Shenandoah, gan ZGC ir izstrādāti, lai Java lietojumprogrammām nodrošinātu zemu latentumu un efektīvu atkritumu savākšanu. Tie ir piemēroti lietojumprogrammām, kurām nepieciešama liela caurlaidspēja, un tās var apstrādāt lielu atmiņas piešķīrumu.
Citāts:[1] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[2] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[3] https://www.reddit.com/r/feedthebeast/comments/r24zg4/upgrade_your_java_to_one_that_has_the_shenandoah/
[4] https://stackoverflow.com/questions/64252590/how-does-clr-gc-compare-to-latest-zgc-and-shenandoah-gc-on-jvm
[5] https://www.uber.com/blog/jvm-tuning-garbage-collection/