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:
newvemakefonksiyonları, 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.