Garbage Collection

Hasan Kadir Demircan
2 min readDec 29, 2019

--

Garbage Collection hakkında bilmemiz gerekenler şunlardır;

  • Garbage Collection mekanizması memory(kaynak) yönetiminin adıdır.
  • C gibi dillerde calloc gibi fonksiyonlarla memory ayırırız, free fonksiyonu ile memory boşaltırız.
  • Java’da ise bu şekilde kendimiz memory ayırmayız. Otomatik olarak Java bu işi kendisi halletmektedir.
  • Garbage Collection avantajı, memory yönetimi yaparak leak(sızıntı)’ya engel olur.
  • Bu işlemde Java’nın robust(dayanıklı,güçlü) özelliğine katkı sağlar.
  • C’de olduğu gibi pontier,calloc,free gibi fonksiyonlarla uğraşmadığımız için, Java’nın simple özelliğini sağlar.
  • JVM(Java Virtual Machine) OS(işletim sistemi), memory(bellek) ram alır ve bunu yönetir.
  • Java’da objeler ve instance değişkenler memory heap alanında yaşarlar.
  • Proje ayakta olduğu sürece kullanılmayan kobjeler belleği kullansa belli bir süre sonra bellek şişecektir, dolacaktır. Garbage Collection kullanılmayan objeleri heap alanından temizleyerek, bu tür olumsuz davranışları en aza indirmektedir.
  • Garbage Collection System.gc() ile kendimizde çağırabiliriz.
  • Garbage Collection mekanizması çalışma mantığı, unreachable(ulaşılamayan,sahipsiz) objeleri heapten temizler ve yeni objeler için yer ayrılır.
  • Garbage Collection mekanizması JVM sorumluluğu altındadır.

Örnek olarak;

  1. Burada Animal sınıfının objesini oluşturduk.
  2. animal objesi heap alanında tutulmaktadır.
  3. animal = null; işlemi ile objenin referansını(bağlantısını) kapatıık, null atadık.
  4. Bu işlemden sonra JVM garbage collection çalıştırarak animal objesini heap alanından temizleyecektir.

Başka bir örnek;

Buradaki örnekte,

  1. Date methodunun objesini oluşturduk.
  2. getDate() methodunda StringBuffer kullandık.
  3. return ile date objesini döndük.
  4. 10. satırdan sonra sb objesi çöp durumuna geçer ve bellekten silinecektir.
  5. Fakat date objesini hala dateLocal objesi gösterdiği için bellekteki date alanı çöp değildir.

Başka bir örnekte;

  1. Runtime objesi üretiliyor.
  2. ilk önce Total memory yazdırılıyor.
  3. Daha sonra kullanabileceğimiz free memory’i yazdırıyoruz.
  4. for döngüsü ile birden fazla Date objesi oluşturuyoruz.
  5. objeleri oluşturduktan sonra after free memory yazdırıyoruz.
  6. System.gc() ile garbage collection çağrıyoruz ve kullanılmayan objeleri temizletiyoruz.
  7. Garbage collection çağrıldıktan sonra free memory yazdırıyoruz.

Github : GarbageCollection

--

--

Hasan Kadir Demircan
Hasan Kadir Demircan

No responses yet