Stack & Heap Nedir?

Bellek (Ram) üzerinde bulunan mantıksal yapılardır.

Stack

  • Statik yer tahsisi yapılır
  • Veriler artan yahut azalan adres mantığında tutulur
  • Veriler üst üste mantıkta dizilir ve sırası gelmeyen aradaki bir değer ile işlem yapılamaz (LIFO)
  • Veriye erişmenin maaliyeti azdır
  • Verilerin “value” değerlerini tutar
  • Veri ile ilgili işlem sona erdiğinde hemen silinir
  • Primitive (Primitif) tip denilen value type tipleri bellek alanında tutabiliriz (int, short, byte, long, decimal, double, float, boolean)
  • Çalışma zamanından önce bu değerlerin bilinmesi gerekmektedir
  • Aynı değerde iki primitif tip tanımlandığında birbirinden habersiz bir şekilde bunu iki defa tanımlayacaktır
  • İşletim sistemi çalışma zamanında bu değerleri bilmek ister ve bu değerler üzerinden programınıza bir bellek ayırır
  • Eğer bu ilklendirme değerleri programcı tarafından aşılırsa “stack overflow” hatası fırlatır
  • Class type referans tiplerin, referans ettikleri adresler yine stack bellek bölgesinde tutulur

Heap

  • Dinamik olarak yer tahsisi yapılır
  • Veriler karışık tutulur
  • Veriye erişmek daha maaliyetlidir
  • Veri ile ilgili işlem sona erdiğinde silinmesi garbage collector’e bağlıdır
    *! String de bir referans tiptir
  • Aynı değerde iki obje tanımlandığında dinamik olarak bunu algılayacak ve iki obje referansı da aynı heap bellek alanını gösterecektir (Her hangi bir obje değişene kadar bu durum sürecektir)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir