Junior — Middle
Sistem daxilində əks yaddaş azad etmə prosesi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da yaddaşın azad olunması prosesi daxili Çöp Toplayıcı (Garbage Collector) vasitəsilə həyata keçirilir. Bu, avtomatik olaraq yaddaşda artıq istifadə olunmayan obyektləri izləyir və onları azad edir.
Çöp toplayıcının əsas mərhələləri:
- İşarələmə (Mark) — toplayıcı bütün aktiv istinadları keçir və əlçatan obyektləri işarələyir.
- Təmizləmə (Sweep) — işarələnməyən obyektlər istifadə olunmayan hesab edilir və azad edilir.
Bu proses fon rejimində baş verir, proqramçı tərəfindən yaddaşın əl ilə idarə olunmasına ehtiyac yoxdur, bu da yaddaş sızıntıları və ya ikiqat azad etmə ilə bağlı səhvlərin ehtimalını azaldır.
Go-da yaddaş istifadəsi nümunəsi:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // yaddaş ayırma
fmt.Println(len(data))
// Funksiyadan çıxıldıqdan sonra, data artıq əlçatan deyil və toplayıcı tərəfindən təmizlənəcək
}
Burada, data diliminin yaddaşı avtomatik olaraq azad ediləcək, artıq ona istinad edən qalmadıqda.