Sobes.tech
Junior

C#-də tullantı toplayıcı nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C#-də çöp toplayıcı avtomatlaşdırılmış yaddaş idarəetmə prosesidir. O, artıq istifadə edilməyən obyektlərin tutduğu yaddaşı azad edir.

Əsas aspektlər:

  • Avtomatik idarəetmə: İnkişaf etdirici, əksər obyektlər üçün yaddaşı əl ilə ayırmağa və ya sərbəst buraxmağa ehtiyac duymur. CLR (Common Language Runtime) bunu avtomatik edir.
  • İstinadların izlənməsi: Çöp toplayıcı, hansı obyektlərin kök mənbələrdən (məsələn, işçi yığınları, statik sahələr) əlçatan olduğunu müəyyən edir. Bu mənbələrdən istinad olmayan obyektlər əlçatmaz sayılır və toplanır.
  • Nəsil: Yığın (heap) 0, 1 və 2 nəsilinə bölünür. Toplama sonrası "sağ qalan" obyektlər yuxarı nəsillərə köçürülür. Bu, prosesi optimallaşdırır, çünki çox obyekt qısa müddət yaşayır.
  • Finalizasiya: Obyektlər Finalize metoduna sahib ola bilər, onu çöp toplayıcı yaddaşı sərbəst buraxmadan əvvəl çağırır. Bu, idarə olunmayan resursların təmizlənməsi üçün istifadə olunur, lakin onun istifadəsi qeyri-müəyyən vaxtda işləməsi səbəbindən məhduddur.
  • Kompaktlaşdırma: Toplama sonrası, çöp toplayıcı sağ qalan obyektləri hərəkət etdirə bilər, yaddaş parçalanmasını azaltmaq üçün.
// İdarə olunan yığında obyektin yaradılması nümunəsi
MyClass obj = new MyClass();
// Ob'ektə artıq istinad yoxdursa, çöp toplayıcı yaddaşı sərbəst buraxa bilər

// İdarə olunmayan resursların əl ilə sərbəst buraxılması nümunəsi, IDisposable və using istifadə edilərək
// Finalize yerinə tövsiyə olunan yanaşma
using (var resource = new UnmanagedResourceWrapper())
{
    // Resursun istifadəsi
} // Burada resource.Dispose() çağırılır, idarə olunmayan resurs təmizlənir