Junior — Middle
Kako se implementira proces obrnjenog oslobađanja memorije unutar sistema?
sobes.tech АИ
Одговор од АИ
U Go, proces oslobađanja memorije implementiran je putem ugrađenog sakupljača smeća (Garbage Collector). On automatski prati objekte u memoriji koji više nisu u upotrebi od strane programa i oslobađa ih.
Glavne faze sakupljača smeća su:
- Označavanje (Mark) — sakupljač prolazi kroz sve aktivne reference i označava dostupne objekte.
- Čišćenje (Sweep) — objekti koji nisu označeni smatraju se neupotrebljivim i oslobađaju se.
Ovo se dešava u pozadini, bez potrebe da programer ručno upravlja memorijom, čime se smanjuje verovatnoća grešaka povezanih sa curenjem memorije ili duplim oslobađanjem.
Primer korišćenja memorije u Go:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // dodela memorije
fmt.Println(len(data))
// Nakon izlaska iz funkcije, data postaje nedostupna i biće očišćena od strane sakupljača smeća
}
Ovde će memorija za rez data biti automatski oslobođena kada na nju više ne bude referencirano.