Pendahuluan


Dalam bahasa pemrograman Java, Garbage Collector adalah sebuah mekanisme otomatis yang digunakan untuk mengelola memori heap.

Garbage Collector akan menghapus objek-objek yang tidak lagi digunakan oleh program.


Cara Kerja Garbage Collector

Garbage Collector bekerja dalam dua tahap utama, yaitu:


Marking

Pada tahap ini, Garbage Collector akan menandai semua objek yang masih digunakan oleh program.

Objek yang tidak ditandai dianggap sebagai sampah dan akan dihapus pada tahap selanjutnya.



Sweeping

Pada tahap ini, garbage collector akan menghapus semua objek yang ditandai sebagai sampah.


Jenis-Jenis Garbage Collector


Java memiliki beberapa jenis garbage collector, antara lain:


Serial Collector

Collector ini adalah jenis collector yang paling sederhana.

Collector ini hanya akan berjalan pada satu thread, sehingga dapat menyebabkan program menjadi tidak responsif saat garbage collection sedang berjalan.



Parallel Collector

Collector ini mirip dengan serial collector, tetapi menggunakan beberapa thread untuk menjalankan proses garbage collection secara paralel.

Collector ini dapat meningkatkan kinerja garbage collection, tetapi juga dapat menyebabkan program menjadi tidak responsif saat garbage collection sedang berjalan.



Concurrent Mark Sweep Collector

Collector ini adalah jenis collector yang paling umum digunakan pada Java 8 dan seterusnya.

Collector ini menggunakan dua thread, yaitu thread marking dan thread sweeping.

Thread marking akan menandai objek-objek yang masih digunakan.

Sedangkan thread sweeping akan menghapus objek-objek yang ditandai sebagai sampah.

Collector ini dapat meningkatkan kinerja garbage collection tanpa menyebabkan program menjadi tidak responsif.



G1 Collector

Collector ini adalah jenis collector yang baru diperkenalkan pada Java 9.

Collector ini menggunakan pendekatan yang berbeda dari collector-collector sebelumnya.

G1 collector membagi heap menjadi beberapa region, dan kemudian menjalankan proses garbage collection secara bertahap pada region-region tersebut.

Collector ini dapat meningkatkan kinerja garbage collection dan mengurangi latency.


Pengaturan Garbage Collector


Pengaturan garbage collector dapat dilakukan menggunakan JVM parameter. Beberapa parameter yang dapat digunakan untuk mengatur garbage collector antara lain:

  • -Xms: Parameter ini digunakan untuk menentukan ukuran awal heap.
  • -Xmx: Parameter ini digunakan untuk menentukan ukuran maksimum heap.
  • -XX:+UseSerialGC: Parameter ini digunakan untuk menggunakan serial collector.
  • -XX:+UseParallelGC: Parameter ini digunakan untuk menggunakan parallel collector.
  • -XX:+UseConcMarkSweepGC: Parameter ini digunakan untuk menggunakan concurrent mark sweep collector.
  • -XX:+UseG1GC: Parameter ini digunakan untuk menggunakan G1 collector.

Garbage collector adalah mekanisme penting dalam bahasa pemrograman Java.

Garbage collector akan membantu Software Engineer untuk mengelola memori heap secara otomatis.

Sehingga Software Engineer tidak perlu khawatir tentang pengelolaan memori secara manual.