Sobes.tech
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:

  1. İşarələmə (Mark) — toplayıcı bütün aktiv istinadları keçir və əlçatan obyektləri işarələyir.
  2. 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.