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
Finalizemetoduna 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