Stack ve Heap Kavramları

Yusuf Çakal
Sep 28, 2017 · 3 min read

Bir yazılımcının tek derdi kodu nasıl okunabilir ya da güzel yazdığı değil derinlerde neler döndüğünü de merak etmesi olmalıdır. Bu metafor üzerinden sizlere açıklamam gereken birkaç kavramın olduğunu düşünüyorum. Peki Computer Science (Bilgisayar Bilimleri) eğitimi almış bir mühendisin birçok derste (Data Structures, Computer Architecture ya da Operation Systems …) karşılaştığı bu yapılardan bahsetmek istiyorum.

Bu kavramlar nedir abi ?. Biz nereye geldik neler oluyor ?. Stack ne Heap ne yenir mi ?. İçilir mi ?.

Stack ve Heap bellekte (ram) bulunan mantıksal yapılardır. Primitif tip dediğimiz int, short, byte, long, decimal, double, float gibi tipler value type (değer tipi) olarak adlandırılır ve stack de tutulur. Çalışma zamanından (runtime) önce bu değerlerin bilinmesi gerekir ve işletim sistemi program çalışmadan önce stack de belirli bir yer ayırır eğer bu bölüm kodu yazan kişi tarafından aşılırsa stack taşma hatası ile (stack overflow) karşılaşılabilir.. Stack de veriler üst üste (LIFO) mantığında dizilir ve sırası gelmeden aradaki bir değer ile işlem yapılamaz. Class type (Sınıf tipi) değişkenler referans tiplerdir referans ettikleri model (referans) stack de değerleri ise heap de saklanır.

Heap ve Stack arasında ki en önemli farklardan birisi heap de veriler karışık bir şekilde saklanır stack de ise artan ya da azalan adres mantığında (big and little endian) çalışır. Buna bağlı olarak heap de ki bir veriye erişmek stack de ki bir veriye erişmeye göre daha maliyetli bir işlemdir. Başka bir farkı ise stack de ki veri hemen silinirken heap de ki veri Garbage Collector (Çöp Toplayıcı) algoritmasına bağlıdır.

Bir diğer konu ise bu bahsettiklerime çok da uzak olmayan Immutable Type (zorunlu , değiştirilemeyen tip). birazdan anlatıcaklarım ile bir örnek yaparak konuyu bağlamayı düşünüyorum.

Haydaaaaa ! nerden çıktı şimdi bu Immutable Type.

String tipi birçok programlama dilinde var ve primitif bir tip değil birer obje tipidir ve aynı zamanda immutable bir tipdir. Ne demek istiyorum.

Image for post
Image for post

Yukarı da gördüğünüz üzere java da bir string değişken tanımlanmış ve değer atılmış.

Image for post
Image for post

ardından değişkenin değeri değiştirilmiş (ekleme yapılmış) ve obje referansı değişmiş bu string tipinin immutable olduğunu gösterir yani değerini değiştiremezsiniz demek istiyor ve bunun yerine yeni bir obje oluşturup eski objeyi çöp toplayıcısına bırakıyor.

Image for post
Image for post

Buna bağlı olarak stack de oluşturulan bir değişkene değer atıldığında ve sonradan aynı değer stack de bulunan farklı bir değişkene atıldığında dinamik oluşamayacağı için birbirinde habersiz iki farklı değişken mantığında çalışır. Fakat heap alanında ise bir obje oluşturulduğunda ve daha sonradan aynı değere sahip farklı bir obje oluşturulduğunda heap alanı zaten böyle bir obje bende var bir daha oluşturmayacağım senin tipini bu objeye referans ediyorum sende rahat et bende rahat edeyim der. :)

Anlatmak istediklerim kısaca bu kadar umarım faydalı olmuştur, görüş , düşünce ve eleştirilerinizi paylaşırsanız memnun olurum.

Esen kalın..

Kaynaklar : Stack and Heap , Immutable Object , Big and Little Endian

Türkçe Yayın

Sign up for Türkçe Yayın Ebülten

By Türkçe Yayın

‘Her düşünce, hür düşünce!’ diyerek çıktığımız yolda buluşmalarımız, kulüplerimiz ve yeni yazılar aracılığıyla daha fazla hayata dokunmaya çalışıyoruz. Bültenimize üye olup bize kapıyı aralık bırakın. Take a look

Create a free Medium account to get Türkçe Yayın Ebülten in your inbox.

Yusuf Çakal

Written by

yusuf.dev

Türkçe Yayın

Düşünce ve fikir hürdür. 'Türkçe Yayın' her düşünce ve fikri duyurmayı amaçlayan özgür blog platformudur.

Yusuf Çakal

Written by

yusuf.dev

Türkçe Yayın

Düşünce ve fikir hürdür. 'Türkçe Yayın' her düşünce ve fikri duyurmayı amaçlayan özgür blog platformudur.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store