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

  1. Značení (Mark) — sběrač prochází všechny aktivní odkazy a označuje přístupné objekty.
  2. Ú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.