Junior — Middle
Jak je v systému implementován proces zpětného uvolnění paměti?
sobes.tech AI
Odpověď od AI
V jazyce Go je proces uvolnění paměti implementován vestavěným sběračem odpadků (Garbage Collector). Automaticky sleduje objekty v paměti, které již program nepoužívá, a uvolňuje je.
Hlavní fáze sběrače odpadků jsou:
- Značení (Mark) — sběrač prochází všechny aktivní odkazy a označuje přístupné objekty.
- Úklid (Sweep) — objekty, které nebyly označeny, jsou považovány za nepoužívané a jsou uvolněny.
To se děje na pozadí, aniž by vývojář musel ručně spravovat paměť, což snižuje pravděpodobnost chyb souvisejících s úniky paměti nebo dvojím uvolněním.
Příklad použití paměti v Go:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // alokace paměti
fmt.Println(len(data))
// Po opuštění funkce bude data nedostupná a bude vyčištěna sběračem odpadků
}
Zde bude paměť pod řezem data automaticky uvolněna, když na ni již nebude odkazováno.