Shenandoah dan ZGC adalah dua pengumpul sampah canggih yang dirancang untuk menyediakan pengumpulan sampah dengan latensi rendah dan efisien untuk aplikasi Java. Berikut adalah beberapa manfaat utama menggunakan kolektor ini:
Shenandoah GC:
1. Waktu Jeda Rendah: Shenandoah GC dirancang untuk meminimalkan waktu jeda dengan melakukan sebagian besar pekerjaan pengumpulan sampah secara bersamaan dengan aplikasi. Hal ini memastikan aplikasi tetap responsif dan bekerja dengan baik bahkan dalam penggunaan memori yang berat[1][3].
2. Pemadatan Bersamaan: Shenandoah GC melakukan pemadatan bersamaan, yang berarti memadatkan tumpukan saat aplikasi sedang berjalan. Hal ini mengurangi kebutuhan jeda pengumpulan sampah secara menyeluruh dan memastikan tumpukan sampah tetap kompak dan efisien[1][3].
3. Tergantung Ukuran Heap: Waktu jeda Shenandoah GC tidak bergantung pada ukuran heap. Artinya dapat menangani heap yang besar tanpa jeda yang berarti, sehingga cocok untuk aplikasi yang membutuhkan alokasi memori yang besar[1][3].
4. Throughput Tinggi: Shenandoah GC dirancang untuk memberikan throughput tinggi dengan meminimalkan waktu yang dihabiskan untuk pengumpulan sampah. Hal ini memastikan bahwa aplikasi dapat terus berjalan secara efisien bahkan dalam penggunaan memori yang berat[1][3].
ZGC:
1. Latensi Rendah: ZGC dirancang untuk memberikan latensi yang sangat rendah dengan meminimalkan waktu yang dihabiskan untuk pengumpulan sampah. Hal ini dicapai dengan melakukan sebagian besar pekerjaan pengumpulan sampah secara bersamaan dengan aplikasi dan dengan menggunakan pendekatan berbasis wilayah satu generasi [2].
2. NUMA-Aware: ZGC dirancang untuk menjadi NUMA-aware, yang berarti dapat secara efisien menangani tumpukan besar dan beberapa inti CPU. Hal ini memastikan bahwa pengumpul sampah dapat memanfaatkan sumber daya perangkat keras yang tersedia [2].
3. Throughput Tinggi: ZGC dirancang untuk memberikan throughput tinggi dengan meminimalkan waktu yang dihabiskan untuk pengumpulan sampah. Hal ini memastikan bahwa aplikasi dapat terus berjalan secara efisien bahkan dalam penggunaan memori yang berat[2].
4. Fitur Eksperimental: ZGC adalah fitur eksperimental yang memerlukan opsi baris perintah khusus untuk mengaktifkannya. Sangat cocok untuk aplikasi yang memerlukan waktu jeda sangat singkat dan dapat menangani alokasi memori yang besar[2].
Singkatnya, Shenandoah dan ZGC dirancang untuk menyediakan pengumpulan sampah dengan latensi rendah dan efisien untuk aplikasi Java. Mereka cocok untuk aplikasi yang memerlukan throughput tinggi dan dapat menangani alokasi memori yang besar.
Kutipan:[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/