Junior — Middle
Hangi bellek türleri vardır ve bunlar birbirleriyle nasıl etkileşir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go (Golang) dilinde temel bellek türleri ve etkileşimleri aşağıdaki gibidir:
-
Yığın (Stack) — fonksiyonların yerel değişkenlerini tutar. Yığın, fonksiyon çağrısı ve dönüşü sırasında hızlıca tahsis edilir ve serbest bırakılır.
-
Yığın (Heap) — dinamik bellek tahsisi için kullanılır, örneğin, fonksiyon dışı kalan nesneler için. Go'nun bir çöp toplayıcısı vardır ve heap'in temizlenmesini yönetir.
-
Küresel/statik bellek — küresel değişkenler ve sabitler içindir.
Etkileşim:
- Bir fonksiyon çağrıldığında, yerel değişkenler yığına yerleştirilir.
- Bir değişkenin daha uzun süre yaşaması gerekiyorsa, derleyici onu "kaçış analizi" ile heap'e taşıyabilir.
- Çöp toplayıcı, nesneler erişilemez hale geldiğinde heap'teki belleği otomatik olarak serbest bırakır.
Örnek:
func foo() *int {
x := 10
return &x // x "kaçıp" heap'e gider, çünkü gösterici döndürülür
}
Burada, x değişkeni, göstericinin fonksiyon dışına çıktıktan sonra geçerli kalması için heap'e yerleştirilecektir.