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

  1. Märkimine (Mark) — koguja läbib kõik aktiivsed viited ja märgib kättesaadavad objektid.
  2. 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.