Pendahuluan


Artikel awal tentang Garbage Collecton (GC) ada di sini

Java Garbage Collector (GC) telah berkembang pesat selama bertahun-tahun

Garbage collector (GC) adalah salah satu komponen penting dari Java Virtual Machine (JVM).

GC bertanggung jawab untuk mengelola memori yang digunakan oleh aplikasi Java.

GC awal, seperti Serial GC dan Parallel GC, sering menyebabkan jeda waktu yang signifikan, yang dapat mengganggu kinerja aplikasi.

GC yang lebih baru, seperti G1 GC, telah meningkatkan kinerja dengan mengurangi jeda waktu.

GC terbaru dari Java adalah Z Garbage Collector (ZGC).

ZGC diperkenalkan di Java 17 dan merupakan GC yang sangat efisien dan responsif.


Sekilas ZGC


ZGC, singkatan dari “Zero-pause Garbage Collector”, adalah GC terbaru dari Oracle.

ZGC dirancang untuk menghilangkan jeda waktu GC sama sekali.

ZGC mencapai hal ini dengan membagi heap menjadi sejumlah region yang sangat kecil.

ZGC kemudian melakukan pengumpulan sampah secara bersamaan di region-region ini.


Kelebihan ZGC


Z Garbage Collector ZGC memiliki beberapa keunggulan dibandingkan GC lainnya, yaitu :

  • Waktu henti (pause time) yang lebih pendek: ZGC mampu mempertahankan waktu henti yang lebih pendek, bahkan untuk aplikasi yang menggunakan banyak memori.

  • Efisiensi penggunaan memori yang lebih baik: ZGC mampu menggunakan memori lebih efisien daripada GC lainnya.

  • Kebutuhan konfigurasi yang lebih rendah: ZGC tidak memerlukan banyak konfigurasi untuk bekerja dengan baik.


Cara Kerja ZGC


ZGC bekerja dengan membagi heap menjadi sejumlah region yang sama ukurannya. ZGC kemudian melakukan pengumpulan sampah dengan cara berikut:

  • Tahap marking: Pada tahap ini, ZGC menentukan objek mana yang masih hidup. Proses ini dilakukan secara bersamaan dengan proses aplikasi.
  • Tahap compaction: Pada tahap ini, ZGC memindahkan objek-objek yang masih hidup ke region-region yang kosong. Proses ini dilakukan secara bersamaan dengan proses aplikasi.
  • Tahap emptying: Pada tahap ini, ZGC membebaskan region-region yang kosong. Proses ini dilakukan secara bersamaan dengan proses aplikasi.

ZGC juga menggunakan teknik yang disebut “concurrent compaction”.

Teknik ini memungkinkan ZGC untuk memindahkan objek-objek yang masih hidup ke region-region yang kosong secara bersamaan dengan proses aplikasi.

Hal ini dapat membantu untuk mengurangi waktu henti GC.


Pengaturan ZGC


Pengaturan ZGC dapat dilakukan melalui opsi-opsi berikut:

  • -XX:+UseZGC: Opsi ini digunakan untuk mengaktifkan ZGC sebagai GC default.
  • -XX:ZAllocationIncrement: Opsi ini menentukan ukuran increment setiap region yang dialokasikan oleh ZGC.
  • -XX:ZMaxGCPauseMillis: Opsi ini menentukan batas waktu maksimum untuk waktu henti GC.

Kesimpulan


ZGC adalah GC yang cocok untuk aplikasi yang membutuhkan waktu henti GC yang pendek, efisiensi penggunaan memori yang tinggi, dan kebutuhan konfigurasi yang rendah.

ZGC dapat digunakan untuk aplikasi yang berjalan di mesin multi-prosesor dengan memori yang besar.