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

  1. Jelölés (Mark) — a gyűjtő végigmegy az összes aktív hivatkozáson, és megjelöli az elérhető objektumokat.
  2. 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á.