Junior — Middle
Hogyan valósul meg a memória fordított felszabadítási folyamata a rendszerben?
sobes.tech MI
Válasz az MI-től
A Go-ban a memória felszabadítási folyamatot a beépített szemétgyűjtő (Garbage Collector) valósítja meg. Automatikusan követi azokat a memóriaobjektumokat, amelyeket már nem használnak a program, és felszabadítja azokat.
A szemétgyűjtő fő lépései:
- Jelölés (Mark) — a gyűjtő végigmegy az összes aktív hivatkozáson, és megjelöli az elérhető objektumokat.
- Tisztítás (Sweep) — a nem megjelölt objektumokat használhatatlannak tekinti, és felszabadítja.
Ez a folyamat háttérben zajlik, nem igényel manuális memória kezelést a fejlesztőtől, csökkentve a memória szivárgás vagy duplán felszabadítás hibáinak valószínűségét.
Példa a memória használatára Go-ban:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // memória foglalás
fmt.Println(len(data))
// A függvényből való kilépés után a data elérhetetlenné válik, és a szemétgyűjtő megtisztítja
}
Itt a data szelet memória automatikusan felszabadul, amikor már nem hivatkoznak rá.