Junior — Middle
Kako se u sistemu vrši raspodela i upravljanje memorijom pomoću Memory Allocator?
sobes.tech АИ
Одговор од АИ
U Go, upravljanje memorijom vrši se pomoću ugrađenog Memory Allocator-a, koji automatski dodeljuje i oslobađa memoriju. Prilikom kreiranja promenljivih ili objekata, memorija se dodeljuje iz hrpe (heap) ili steka (stack) u zavisnosti od opsega i vremena trajanja objekta.
Glavne karakteristike:
- Automatsko upravljanje memorijom: Go koristi Garbage Collector (sakupljač smeća), koji periodično oslobađa neiskorišćenu memoriju.
- Dodela memorije: Funkcije
newimakese koriste za dodelu memorije za objekte, sečeve (slices), mape i kanale. - Optimizacija: Kompajler analizira gde bi objekat trebalo da bude — na steku ili na hrpi — radi minimiziranja dodatnih troškova.
Primer dodele memorije:
package main
import "fmt"
func main() {
// new dodeljuje memoriju za int i vraća pokazivač
p := new(int)
*p = 10
fmt.Println(*p) // 10
// make dodeljuje i inicijalizuje sečiv
s := make([]int, 3)
s[0] = 1
fmt.Println(s) // [1 0 0]
}
Na ovaj način, Memory Allocator u Go obezbeđuje efikasno i sigurno upravljanje memorijom bez potrebe za ručnim oslobađanjem.