Junior — Middle
Cum se implementează procesul de eliberare inversă a memoriei în sistem?
sobes.tech AI
Răspuns de la AI
În Go, procesul de eliberare a memoriei este implementat prin colectorul de gunoi încorporat. Acesta urmărește automat obiectele din memorie care nu mai sunt utilizate de program și le eliberează.
Etapele principale ale colectorului de gunoi sunt:
- Marcarea (Mark) — colectorul parcurge toate referințele active și marchează obiectele accesibile.
- Curățarea (Sweep) — obiectele care nu au fost marcate sunt considerate neutilizate și sunt eliberate.
Acest proces are loc în fundal, fără ca dezvoltatorul să gestioneze manual memoria, ceea ce reduce probabilitatea de erori legate de scurgeri de memorie sau eliberări duble.
Exemplu de utilizare a memoriei în Go:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // alocare memorie
fmt.Println(len(data))
// După ieșirea din funcție, data devine inaccesibilă și va fi curățată de colectorul de gunoi
}
Aici, memoria pentru slice-ul data va fi eliberată automat când nu va mai fi referențiată.