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ú:
- Značenie (Mark) — zberač prechádza všetky aktívne odkazy a označuje dostupné objekty.
- 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é.