Sobes.tech
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 new i make se 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.