Sobes.tech
Junior — Middle

Ako je implementovaný proces spätného uvoľňovania pamäte v systéme?

sobes.tech AI

Odpoveď od AI

V Go je proces uvoľňovania pamäte implementovaný pomocou vstavaného zberača odpadu (Garbage Collector). Automaticky sleduje objekty v pamäti, ktoré už program nepoužíva, a ich uvoľňuje.

Hlavné fázy zberača odpadu sú:

  1. Značenie (Mark) — zberač prechádza všetky aktívne odkazy a označuje dostupné objekty.
  2. Upratovanie (Sweep) — objekty, ktoré neboli označené, sa považujú za nepoužívané a sú uvoľnené.

To sa deje na pozadí, bez toho, aby vývojár musel manuálne spravovať pamäť, čím sa znižuje pravdepodobnosť chýb súvisiacich s únikmi pamäti alebo dvojitým uvoľnením.

Príklad použitia pamäti v Go:

package main

import "fmt"

func main() {
    data := make([]int, 1000000) // alokácia pamäti
    fmt.Println(len(data))
    // Po opustení funkcie sa data stáva nedostupnou a bude vyčistená zberačom odpadu
}

Tu bude pamäť pre rez data automaticky uvoľnená, keď na ňu už nebude odkazované.