Junior — Middle
Kako se vrši automatsko čišćenje nepotrebnih podataka u memoriji u programskim jezicima?
sobes.tech АИ
Одговор од АИ
U programskim jezicima kao što je Go, automatsko upravljanje memorijom implementirano je pomoću sakupljača smeća (Garbage Collector, GC). Sakupljač smeća prati objekte u memoriji i određuje koje više nisu u upotrebi od strane programa (tj. na njih nema referenci). Takvi objekti smatraju se "otpadom" i automatski se oslobađaju kako bi se izbegli curenja memorije.
U Go, sakupljač smeća radi paralelno sa izvršavanjem programa i periodično ga za kratko vreme zaustavlja radi analize i čišćenja neupotrebljenih objekata. Ovo omogućava programeru da ne brine o ručnom oslobađanju memorije, kao u jezicima sa ručnim upravljanjem memorijom.
Primer:
package main
import "fmt"
func main() {
data := make([]int, 1000000) // dodela memorije
fmt.Println(len(data))
// Nakon izlaska iz main, ako na data nema referenci, memorija će automatski biti oslobođena od strane sakupljača smeća
}