Java Garbage Collector Nedir?

Garbage Collector (GC), Java programlarındaki bellek yönetimini otomatik olarak gerçekleştiren bir mekanizmadır. Garbage Collector, bellekte kullanılmayan nesneleri tespit eder ve bunları bellekten temizler, böylece programcının manuel olarak bellek yönetimiyle uğraşmasına gerek kalmaz.

Java programları, bellekte dinamik olarak nesneler oluşturabilir. Ancak, bazen bu nesnelerin kullanımı sona erer ve bellekten silinmeleri gerekir. Garbage Collector, bu kullanılmayan nesneleri tespit eder ve bellek alanını serbest bırakır. Böylece, programın sürekli bellek sızıntısı sorunlarından etkilenmesinin önüne geçer.

Garbage Collector, temelde şu adımları izler:

  1. Referans Tespiti: Garbage Collector, nesnelerin hala kullanılmakta olup olmadığını belirlemek için referans tespiti yapar. Bir nesneye başka bir nesne tarafından referans varsa, o nesne hala kullanılmaktadır ve Garbage Collector tarafından temizlenmez.
  2. İşaretleme: GC, root olarak adlandırılan başlangıç referanslarını takip eder ve bu referansların erişebildiği nesneleri işaretler. Erişilemeyen nesneleri belirlemek için genellikle “mark-sweep” algoritması kullanılır. İşaretlenmeyen nesneler potansiyel olarak silinecek nesnelerdir.
  3. Silme (Sweep): İşaretlenmeyen nesneleri temizleme aşamasıdır. GC, işaretlenmeyen nesneleri bellekten serbest bırakır ve bu belleği başka nesnelerin kullanımı için kullanılabilir hale getirir.
  4. Kompaktlama: Bellekteki serbest bırakılan alanlar arasında boşluklar oluşabilir. Bu boşluklar, programın bellek kullanımını optimize etmesini engelleyebilir. Kompaktlama aşamasında, Garbage Collector, kullanılan nesneleri bir araya getirerek belleği yeniden düzenler ve böylece daha fazla sürekli bellek alanı elde eder.

Garbage Collector’ın çalışma süreci, JVM’nin belirli bir GC algoritmasını kullanmasına bağlı olarak değişebilir. JVM, farklı GC algoritmaları sunar, örneğin “Mark-Sweep-Compact”, “Parallel”, “Concurrent” vb. Bu algoritmalar, performans, duraksama süresi ve bellek verimliliği gibi farklı optimizasyon hedeflerine yöneliktir.

Java programcıları, genellikle GC’nin davranışını veya GC algoritmasını yapılandırabilme imkanına sahiptirler. Özel bellek gereksinimleri veya performans hedefleri olan uygulamalar, GC parametrelerini ayarlayarak veya farklı GC algoritması seçerek bellek yönetimini optimize edebilirler.


Bu yazı

tarihinde

tarafından oluşturulmuştur.

Yazı kategoris :


Yorumlar

Yorum bırakın