Junior — Middle
Kuidas süsteemis toimub tagasipööratud mälu vabastamise protsess?
sobes.tech AI
Vastus AI-lt
Go keeles mälu vabastamise protsess on rakendatud sisseehitatud prügikogujaga (Garbage Collector). See jälgib automaatselt mälus olevaid objekte, mida programm enam ei kasuta, ja vabastab need.
Prügikogujal on järgmised peamised etapid:
- Märkimine (Mark) — koguja läbib kõik aktiivsed viited ja märgib kättesaadavad objektid.
- Puhastamine (Sweep) — märkimata objektid loetakse kasutamata ja vabastatakse.
See toimub taustal, ilma et arendaja peaks käsitsi mälu haldust tegema, mis vähendab mälu lekkimise või topeltvabastamisega seotud vigade tõenäosust.
Näide mälu kasutamisest Go-s:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // mälu eraldamine
fmt.Println(len(data))
// Pärast funktsioonist väljumist muutub data kättesaamatuks ja see puhastatakse prügikogujaga
}
Siin vabastatakse data viilme mälu automaatselt, kui sellele enam viiteid ei ole.