Glavni primeri uporabe za Shenandoah in ZGC so:
Shenandoah GC:
1. Nizka zakasnitev: Shenandoah je zasnovan tako, da minimizira čase premora tako, da večino dela zbiranja smeti izvaja sočasno z aplikacijo. To zagotavlja, da aplikacija ostane odzivna in dobro deluje tudi pri veliki uporabi pomnilnika.
2. Visoka prepustnost: Shenandoah 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.
3. Large Heaps: Shenandoah je zasnovan za učinkovito obdelavo velikih kopic, zaradi česar je primeren za aplikacije, ki zahtevajo velike dodelitve pomnilnika.
4. Stalno dodeljevanje: Shenandoah je primeren za aplikacije s stalnim dodeljevanjem in uporabo objektov, saj lahko to učinkovito obravnava.
5. Starejši objekti: Shenandoah je primeren za aplikacije, kjer so objekti starejši in so stroški ustvarjanja novih objektov majhni, saj lahko to učinkovito obravnava.
6. Uporaba vsebnika: Shenandoah se lahko uporablja v kontejnerskih okoljih, vendar je odvisno od specifičnega primera uporabe.
ZGC:
1. Nizka zakasnitev: ZGC je zasnovan tako, da minimizira čase premora tako, da izvaja večino dela zbiranja smeti sočasno z aplikacijo. To zagotavlja, da aplikacija ostane odzivna in dobro deluje tudi pri veliki uporabi pomnilnika.
2. 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.
3. Velike kopice: ZGC je zasnovan za učinkovito obdelavo velikih kopic, zaradi česar je primeren za aplikacije, ki zahtevajo velike dodelitve pomnilnika.
4. NUMA-Aware: ZGC je zasnovan za NUMA-aware, kar pomeni, da lahko učinkovito obravnava velike kopice in več jeder CPE.
5. Poskusna funkcija: ZGC je eksperimentalna funkcija in 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.
Če povzamemo, tako Shenandoah kot ZGC sta zasnovana tako, da zagotavljata nizko zakasnitev in visoko prepustnost, zaradi česar sta primerna za aplikacije, ki zahtevajo učinkovito upravljanje pomnilnika.
Citati:[1] https://www.opsian.com/blog/aleksey-shipilev-shenandoah-concurrent-gcs/
[2] https://cljure-goes-fast.com/blog/shenandoah-in-production/
[3] https://wiki.openjdk.org/display/shenandoah/Main
[4] https://www.diva-portal.org/smash/get/diva2:1466940/FULLTEXT01.pdf
[5] https://developers.redhat.com/articles/2024/05/28/beginners-guide-shenandoah-garbage-collector