Shenandoah in ZGC sta dva napredna zbiralnika smeti, zasnovana za zagotavljanje nizke zakasnitve in učinkovito zbiranje smeti za aplikacije Java. Tukaj je nekaj ključnih prednosti uporabe teh zbiralnikov:
Shenandoah GC:
1. Nizki časi premora: Shenandoah GC je zasnovan tako, da minimizira čase premora z izvajanjem večine dela zbiranja smeti sočasno z aplikacijo. To zagotavlja, da aplikacija ostaja odzivna in dobro deluje tudi pri veliki uporabi pomnilnika[1][3].
2. Sočasno zbijanje: Shenandoah GC izvaja sočasno zbijanje, kar pomeni, da stisne kopico, medtem ko se aplikacija izvaja. To zmanjša potrebo po popolnih premorih pri zbiranju smeti in zagotavlja, da kopica ostane kompaktna in učinkovita[1][3].
3. Neodvisno od velikosti kopice: časi premora Shenandoah GC so neodvisni od velikosti kopice. To pomeni, da lahko obdeluje velike kopice brez večjih premorov, zaradi česar je primeren za aplikacije, ki zahtevajo velike dodelitve pomnilnika[1][3].
4. Visoka prepustnost: Shenandoah GC je zasnovan tako, da zagotavlja visoko prepustnost z zmanjšanjem časa, porabljenega za zbiranje smeti. To zagotavlja, da lahko aplikacija še naprej učinkovito deluje tudi pri veliki uporabi pomnilnika[1][3].
ZGC:
1. Nizka zakasnitev: ZGC je zasnovan tako, da zagotavlja izjemno nizko zakasnitev z zmanjšanjem časa, porabljenega za zbiranje smeti. To doseže z izvajanjem večine dela zbiranja smeti sočasno z aplikacijo in z uporabo enogeneracijskega pristopa, ki temelji na regiji [2].
2. NUMA-Aware: ZGC je zasnovan za NUMA-aware, kar pomeni, da lahko učinkovito obravnava velike kopice in več jeder CPE. To zagotavlja, da lahko zbiralec smeti izkoristi razpoložljive vire strojne opreme[2].
3. Visoka prepustnost: ZGC je zasnovan tako, da zagotavlja visoko prepustnost z zmanjšanjem časa, porabljenega za zbiranje smeti. To zagotavlja, da lahko aplikacija še naprej učinkovito deluje tudi pri veliki uporabi pomnilnika[2].
4. Poskusna funkcija: ZGC je eksperimentalna funkcija, ki zahteva posebne možnosti ukazne vrstice za omogočanje. Primeren je za aplikacije, ki zahtevajo zelo kratke čase premora in lahko obravnavajo velike dodelitve pomnilnika [2].
Če povzamemo, tako Shenandoah kot ZGC sta zasnovana tako, da zagotavljata nizko zakasnitev in učinkovito zbiranje smeti za aplikacije Java. Primerni so za aplikacije, ki zahtevajo visoko prepustnost in zmorejo velike dodelitve pomnilnika.
Citati:[1] https://cljure-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/