Junior
C#-də tullantı toplayıcı (Garbage Collector) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Avtomatik yaddaş idarəetmə mexanizmi, artıq referanslara malik olmayan obyektlərin tutduğu yaddaşı azad edir. Bu, yaddaş sızmalarının qarşısını alır və inkişaf prosesini sadələşdirir.
Qəhrəman toplayıcısının işləmə prinsipləri:
- Obyektlərin izlənməsi: Hələ də kök düyünlərdən (statik sahələr, yığın üzərində yerli dəyişənlər) əlçatan olan obyektləri müəyyən edir.
- Tullantıların toplanması: Əgər obyektə referans yoxdursa, qəhrəman toplayıcı onu silmək üçün işarələyir.
- Yaddaşın azad olunması: Silinmiş obyektlərin tutduğu yaddaşı azad edir və qalan yaddaşı sıxışdıraraq parçalanmanı azaldır.
Obyekt nəsilləri:
- 0-cı nəsil: Yaxın zamanda yaradılmış və qısa ömürlü obyektləri əhatə edir. Toplama tez-tez baş verir.
- 1-ci nəsil: 0-cı nəsil toplamasını keçmiş obyektləri əhatə edir. Toplama daha az baş verir.
- 2-ci nəsil: Uzunömürlü obyektləri əhatə edir. Toplama nadir hallarda baş verir.
Zəruri GC çağırışı (nadir və ehtiyatla istifadə olunur):
// Zəruri yaddaş toplanması çağırışı
System.GC.Collect();
// Finalizatorların tamamlanmasını gözləyir
System.GC.WaitForPendingFinalizers();
.NET-də əsas yaddaş toplanma mexanizmi işarələmə və sıxışdırma algoritmidir.