Sobes.tech
Junior — Middle

Memory Allocator kullanılarak sistemde bellek dağıtımı ve yönetimi nasıl gerçekleştirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde bellek yönetimi, otomatik olarak bellek ayırıp serbest bırakan yerleşik Bellek Ayırıcı (Memory Allocator) kullanılarak gerçekleştirilir. Değişkenler veya nesneler oluşturulurken, bellek nesnenin kapsamına ve yaşam süresine bağlı olarak yığın (heap) veya yığın (stack) alanından tahsis edilir.

Ana özellikler:

  • Otomatik bellek yönetimi: Go, periyodik olarak kullanılmayan belleği serbest bırakan Çöp Toplayıcı (Garbage Collector) kullanır.
  • Bellek tahsisi: new ve make fonksiyonları, sırasıyla nesneler, dilimler (slices), haritalar (maps) ve kanallar (channels) için bellek tahsis etmekte kullanılır.
  • Optimizasyon: Derleyici, nesnenin yığında mı yoksa yığında mı bulunması gerektiğini analiz ederek ek maliyetleri minimize eder.

Bellek tahsisi örneği:

package main

import "fmt"

func main() {
    // new, bir int için bellek tahsis eder ve gösterici döner
    p := new(int)
    *p = 10
    fmt.Println(*p) // 10

    // make, bir dilim (slice) tahsis eder ve başlatır
    s := make([]int, 3)
    s[0] = 1
    fmt.Println(s) // [1 0 0]
}

Bu şekilde, Go'daki Bellek Ayırıcı, manuel serbest bırakmaya gerek kalmadan etkili ve güvenli bir bellek yönetimi sağlar.