Sobes.tech
Middle

Çöp toplayıcı nedir ve nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Çöp Toplayıcı (Garbage Collector, GC), program tarafından artık kullanılmayan belleği otomatik olarak yöneten bir mekanizmadır ve belleği tahsis eder ve serbest bırakır.

Çalışma prensibi:

  1. Bellek tahsisi: Bir program nesneler oluşturduğunda, çöp toplayıcı bunlar için yığın (heap) içinde yer tahsis eder.
  2. Erişilebilirliğin belirlenmesi: Çöp toplayıcı, nesnelerin programın "kök" (root) noktalarından erişilebilir olup olmadığını belirler. Kökler, yürütülen fonksiyonlardaki yerel değişkenler, statik değişkenler, thread'lerden referanslar vb. olabilir.
  3. Çöp toplama: Köklerden erişilemeyen nesneler "çöp" olarak kabul edilir ve belleği serbest bırakılabilir.

Farklı çöp toplama algoritmaları vardır, örneğin:

  • İşaretleme ve Temizleme (Mark-and-Sweep): Toplayıcı, köklerden erişilebilir nesne grafını tarar ve işaretler. Daha sonra, tüm yığını tarar ve işaretlenmiş nesnelerin belleğini serbest bırakır.
  • Kopyalama: Yığın iki bölüme ayrılır. Erişilebilir nesneler bir yerden diğerine kopyalanır ve eski bölüm temizlenir.
  • Nesilsel (Generational): Nesneler nesillere ayrılır. Yeni nesneler genç nesile, eski nesneler olgun nesile yerleştirilir. Çöp toplama, genellikle genç nesilde daha sık yapılır çünkü çoğu nesnenin kısa ömürlüdür.

Java'da çalışma örneği (basitleştirilmiş):

// Program yığında nesneler oluşturur
Object obj1 = new Object();
Object obj2 = new Object();

// obj1 erişilemez hale gelir
obj1 = null;

// Çöp toplayıcı, obj1 tarafından kullanılan belleği serbest bırakabilir