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.

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

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.

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 E-bü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.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

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 ailesidir.

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 ailesidir.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

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