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.