Sobes.tech
Junior — Middle

Go dilində avtomatik tullantıların toplanması mexanizmini və yaddaşın necə idarə olunduğunu izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində avtomatik çöp toplayıcı (Garbage Collector, GC) istifadə olunur və bu, yaddaşı idarə edir, istifadə olunmayan obyektləri azad edir.

Mekanizm obyektlərin əlçatanlığını izləmə və sayma algoritmına əsaslanır:

  • Go, proqramın icrası ilə paralel olaraq çöp toplanmasını başlatır (müxtəlif GC).
  • GC, yığın içindəki obyektlərin artıq kök referanslardan (məsələn, qlobal dəyişənlər, goroutine yığınları) əlçatan olmadığını müəyyən edir.
  • Əlçatan olmayan obyektlər çöp sayılır və azad edilir.

Xüsusiyyətlər:

  • Go, üç nəsil toplanma istifadə edir: mark (əlçatan obyektləri işarə et), sweep (əlçatan olmayanları təmizlə).
  • Çöp toplanması, proqramın icrasını bloklamamaq üçün fasilələri minimuma endirir.
  • Yaddaş idarəetməsi avtomatikdir, proqramçı yaddaşı açıq şəkildə azad etməlidir.

Nümunə:

func main() {
    s := make([]int, 1000000) // yaddaş ayır
    // s-dən istifadə
    s = nil // indi dilim əlçatan deyil
    // GC, növbəti işə salınmada yaddaşı azad edəcək
}

Beləliklə, Go yaddaş idarəetməsini sadələşdirir, sızmalar və səhvlərin ehtimalını azaldır.