Garbage Collection (zibil yığımı) — proqramlaşdırma dillərində istifadə olunmayan və artıq ehtiyac duyulmayan yaddaş sahələrinin avtomatik olaraq azad edilməsini təmin edən bir yaddaş idarəetmə prosesidir. Bu mexanizm əsasən dinamik yaddaş (heap) üzərində işləyir və proqramın icrası zamanı yaradılan obyektlərdən artıq istifadə olunmadığını müəyyən edərək onları silir.
Garbage Collection sayəsində proqramçı yaddaşı əl ilə idarə etmək məcburiyyətində qalmır, bu da proqramda yaddaş sızıntısı (memory leak) və ya “dangling pointer” kimi problemlərin qarşısını alır.
Necə işləyir?
- Obyekt yaradılır: Proqramda hər hansı bir obyekt (məsələn, siyahı, sözlük və s.) yaradıldıqda, yaddaşda ona uyğun bir sahə ayrılır.
- İstinadlar izlənir: Həmin obyektə istinad edən (yəni istifadə edən) dəyişənlər, funksiyalar və ya digər obyektlər sistem tərəfindən izlənilir.
- İstinadsız obyektlər: Əgər heç bir dəyişən və ya obyekt artıq həmin yaddaş sahəsinə istinad etmirsə, bu, artıq "ölü obyekt" sayılır.
- Zibil toplanır: Garbage Collector bu obyektləri aşkar etdikdə, onları yaddaşdan avtomatik olaraq silir və bu yaddaş sahəsini təkrar istifadə üçün azad edir.
Garbage Collection harada istifadə olunur?
- Python: Python-da Garbage Collection avtomatik işləyir və gc modulu vasitəsilə izlənə bilər.
- Java: Java Virtual Machine (JVM) Garbage Collection-u daxilində saxlayır və müxtəlif metodlarla həyata keçirir (mark and sweep, generational GC və s.).
- JavaScript: Brauzerlərdə çalışan JavaScript mühərrikləri də Garbage Collection tətbiq edir, məsələn, Chrome-un V8 mühərriki.
Üstünlükləri
- Proqramçını yaddaş azad etmək məsuliyyətindən azad edir.
- Yaddaş sızıntılarının qarşısını alır.
- Proqramın sabitliyini və təhlükəsizliyini artırır.
Dezavantajları
- Garbage Collection müəyyən zamanlarda aktiv olduğu üçün performansda gecikmə yarada bilər.
- Avtomatik işlədiyi üçün proqramçı onun nə zaman baş verəcəyini tam idarə edə bilməz.
- Bəzi hallarda lazımsız obyektlər vaxtında silinmədiyi üçün yaddaşın çox istifadəsinə səbəb ola bilər.
Python-da Garbage Collection nümunəsi
import gc
# GC haqqında məlumat
print(gc.get_threshold())
# GC əl ilə başlatmaq
gc.collect()
Nəticə
Garbage Collection proqramın yaddaş istifadəsini avtomatik optimallaşdıran vacib bir texnologiyadır. Bu mexanizm proqramçıya daha çox funksionallığa fokuslanmaq imkanı verir, çünki yaddaş idarəsi sistemi tərəfindən idarə olunur. Lakin bu mexanizmi anlamaq və onun necə işlədiyini bilmək, performans və optimallaşdırma baxımından vacibdir.