Shenandoah ve ZGC, Java uygulamaları için düşük gecikme süreli ve verimli çöp toplama sağlamak üzere tasarlanmış iki gelişmiş çöp toplayıcıdır. Bu toplayıcıları kullanmanın bazı önemli faydaları şunlardır:
Shenandoah GC:
1. Düşük Duraklatma Süreleri: Shenandoah GC, çoğu çöp toplama işini uygulamayla eşzamanlı olarak gerçekleştirerek duraklama sürelerini en aza indirecek şekilde tasarlanmıştır. Bu, uygulamanın yoğun bellek kullanımında bile yanıt vermeye devam etmesini ve iyi performans göstermesini sağlar[1][3].
2. Eşzamanlı Sıkıştırma: Shenandoah GC eşzamanlı sıkıştırma gerçekleştirir; bu, uygulama çalışırken yığının sıkıştırıldığı anlamına gelir. Bu, tam çöp toplama duraklamalarına olan ihtiyacı azaltır ve yığının kompakt ve verimli kalmasını sağlar[1][3].
3. Yığın Boyutundan Bağımsızdır: Shenandoah GC'nin duraklama süreleri yığın boyutundan bağımsızdır. Bu, büyük yığınları önemli duraklamalar olmadan işleyebileceği anlamına gelir; bu da onu büyük bellek ayırmaları gerektiren uygulamalar için uygun kılar[1][3].
4. Yüksek Verim: Shenandoah GC, çöp toplama için harcanan süreyi en aza indirerek yüksek verim sağlayacak şekilde tasarlanmıştır. Bu, uygulamanın yoğun bellek kullanımında bile verimli bir şekilde çalışmaya devam edebilmesini sağlar[1][3].
###ZGC:
1. Düşük Gecikme: ZGC, çöp toplamaya harcanan süreyi en aza indirerek son derece düşük gecikme sağlayacak şekilde tasarlanmıştır. Bunu, çoğu çöp toplama işini uygulamayla eş zamanlı gerçekleştirerek ve tek nesil, bölge bazlı bir yaklaşım kullanarak başarır[2].
2. NUMA-Aware: ZGC, NUMA-duyarlı olacak şekilde tasarlanmıştır; bu, büyük yığınları ve birden fazla CPU çekirdeğini verimli bir şekilde işleyebileceği anlamına gelir. Bu, çöp toplayıcının mevcut donanım kaynaklarından yararlanabilmesini sağlar[2].
3. Yüksek Verim: ZGC, çöp toplamaya harcanan süreyi en aza indirerek yüksek verim sağlayacak şekilde tasarlanmıştır. Bu, uygulamanın yoğun bellek kullanımında bile verimli bir şekilde çalışmaya devam edebilmesini sağlar[2].
4. Deneysel Özellik: ZGC, etkinleştirilmesi için belirli komut satırı seçenekleri gerektiren deneysel bir özelliktir. Çok kısa duraklama süreleri gerektiren ve büyük bellek tahsislerini işleyebilen uygulamalar için uygundur[2].
Özetle, hem Shenandoah hem de ZGC, Java uygulamaları için düşük gecikme süreli ve verimli çöp toplama olanağı sağlayacak şekilde tasarlanmıştır. Yüksek verim gerektiren uygulamalar için uygundurlar ve büyük bellek tahsislerini işleyebilirler.
Alıntılar:[1] https://clojure-goes-fast.com/blog/shenandoah-in-prodüksiyon/
[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/