Sobes.tech
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.