Sobes.tech
Junior — Middle

İdarə olunan proqramlaşdırma dillərində avtomatik tullantıların toplanmasının necə həyata keçirildiyini izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Java kimi idarə olunan dillərdə Avtomatik Tullantıların Toplanması (Garbage Collection, GC) proqram tərəfindən artıq istifadə edilməyən obyektlərin tutduğu yaddaşı avtomatik olaraq azad etmək üçün həyata keçirilmişdir.

GC-nin əsas prinsipləri:

  • Obyektlərin əlçatanlığının izlənməsi: Sistem hansı obyektlərin kök referanslardan (məsələn, çağrı yığını, statik dəyişənlər) əlçatan olduğunu müəyyən edir. Əgər obyekt əlçatan deyilsə, bu, artıq lazım olmadığını göstərir.
  • İşarələmə və təmizləmə: GC bütün əlçatan obyektləri işarələyir və sonra əlçatan olmayan obyektlərin tutduğu yaddaşı azad edir.
  • Fərqli alqoritmlər: Müxtəlif yanaşmalar mövcuddur — köçürən GC, işarələmə və təmizləmə, nəsil GC.

Məsələn, Java-da, nəsil toplayıcı istifadə olunur və yığma (heap) nəsillərə bölünür (gənc, köhnə). Gənc obyektlər daha çox toplanır, çünki çox sayda obyekt tezliklə artıq olur, bu da effektivliyi artırır.

Təxminən, GC belə işləyir:

// Obyekt yaratmaq
MyObject obj = new MyObject();
// Əgər obj artıq istifadə olunmursa və ona referanslar yoxdursa,
// GC zamanla yaddaşı avtomatik azad edəcək.

İstifadəçi yaddaşı açıq şəkildə azad etməlidir, bu da yaddaş idarəetməsi ilə bağlı səhvləri azaldır.