Sobes.tech
Senior

Hogyan működik a szemétgyűjtő a Go-ban? Mikor indul el? Manuálisan is elindítható?

sobes.tech MI

Válasz az MI-től

A szemétgyűjtő (GC) a Go-ban egy eseményalapú, konkurrent, jelölő és takarító szemétgyűjtő, mark-and-sweep algoritmussal.

Hogyan működik:

  • A program futása közben a GC időszakosan elindul, hogy megtalálja és felszabadítsa a nem használt memóriát.
  • Először a jelölési (mark) fázis történik, ahol a GC megjelöli az összes elérhető objektumot.
  • Ezután a takarítási (sweep) fázis következik, ahol a nem elérhető objektumok által foglalt memóriát felszabadítja.

Mikor indul el:

  • A GC automatikusan elindul, amikor az allokált memória mennyisége eléri a beállításoktól és a jelenlegi használattól függő küszöböt.

Kézzel indítható:

  • Igen, a runtime csomag runtime.GC() függvényének hívásával kézzel is elindítható.

Példa hívás:

package main

import (
    "runtime"
)

func main() {
    // Kézi szemétgyűjtő indítása
    runtime.GC()
}

Azonban nem ajánlott gyakran kézzel hívni a GC-t, mivel ez negatívan befolyásolhatja a teljesítményt.