Sobes.tech
Junior

C#'ta çöp toplayıcı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C#'ta çöp toplayıcı, otomatik bir bellek yönetimi sürecidir. Artık kullanılmayan nesnelerin kapladığı belleği serbest bırakır.

Anahtar noktalar:

  • Otomatik yönetim: Geliştirici, çoğu nesne için belleği manuel olarak ayırmak veya serbest bırakmak zorunda değildir. CLR (Common Language Runtime) bunu otomatik olarak yapar.
  • Referans takibi: Çöp toplayıcı, kök kaynaklardan (örneğin, iş parçacığı yığınları, statik alanlar) erişilebilen nesneleri belirler. Bu kaynaklardan referansı olmayan nesneler ulaşılmaz kabul edilir ve toplanır.
  • Nesil: Heap (yığın), 0, 1 ve 2 olmak üzere nesillere ayrılır. Toplama sonrası "hayatta kalan" nesneler üst nesillere taşınır. Bu, çoğu nesnenin kısa ömürlü olduğu için işlemi optimize eder.
  • Finalizasyon: Nesnelerin, bellek serbest edilmeden önce çağrılan Finalize metodu olabilir. Yönetilmeyen kaynakların temizlenmesi için kullanılır, ancak çalışma zamanının tahmin edilemezliği nedeniyle sınırlıdır.
  • Kompaktlama: Toplama sonrası, çöp toplayıcı hayatta kalan nesneleri hareket ettirerek bellek parçalanmasını azaltabilir.
// Yönetilen yığında nesne oluşturma örneği
MyClass obj = new MyClass();
// obj'e artık referans yoksa, çöp toplayıcı belleği serbest bırakabilir

// IDisposable ve using kullanarak yönetilmeyen kaynakların manuel serbest bırakılması örneği
// Finalize yerine önerilen yaklaşım
using (var resource = new UnmanagedResourceWrapper())
{
    // Kaynağın kullanımı
} // Burada resource.Dispose() çağrılır, yönetilmeyen kaynak temizlenir