3. Bellek Bölgeleri

1.Bellek Bölgeleri

Bilgisayardaki bellek bölgelerini bilmek geliştirici açısından önemlidir. Bellek bölgeleri RAM’in mantıksal bölümleridir. Değişkenlere atanan değerler bellek bölgelerinde saklanırlar. Bellek bölgeleri bilinirse geliştirilen uygulamalarda sistem kaynakları daha tasarruflu kullanılarak performans kayıpları azaltılabilir.

Stack Bölgesi : RAM bellek üzerinde değer tipli değişkenlerin değerlerinin tutulduğu bölgedir. Derleyici tarafından bu bölgede tutulacak değişkenlerin veri türlerinin bilinmesi gerekir. Tanımlama işleminden sonra veri türüne göre bellekte yer ayrılır.

Heap Bölgesi : Bu bölgede RAM bellek üzerindedir. “Heap” te tutulacak nesnelerin derleyici tarafından önceden bilinmesi gerekli değildir. Referans tipli değişkenlerin tutulduğu bellek bölgesidir.

Sabit Bölge : Programda oluşturulan sabit ifadeler bu bölgede tutulurlar.

Static Bölge : Bu bölgede tutulan değişkenlerin ömürleri programın çalışma süresincedir. C#da static anahtar sözcüğü ile değişkenler bu bölgede saklanabilirler.

Register Bölgesi : Mikroişlemci içerisinde bulunur. Bu bölgeye erişim derleyiciler ile olur. Derleyici sık kullandığı verileri bu bölgede tutar.

2.Değer Tipli ve Referans Tipli Veri Türleri

Veri türleri bellek bölgelerinde saklanma durumlarına göre 2’ye ayrılır.

  • Değer tipli
  • Referans Tipli

Değer Tipli veri türleri belleğin stack denilen bölgesinde tutulur. Saklanması istenen değer doğrudan belleğe yazılır gerektiğinde çağrılır ve kullanılır.

Kod blogunda a ve b değişkenleri tanımlandığında bellek alanı yukarıdaki gibi tanımlanır. Daha sonra a=b; dediğimizde ve bir sonrasında b=7; dediğimizde b değişkeninin değeri 7 olur ancak a değişkeninin değeri 7 olmaz. Çünkü değer tipli değişkenler stack bölgesinde farklı fiziksel adreslerde saklanırlar.

heapstack

Referans Tipli veriler heap bölgesinde tutulur. Verinin tutulduğu heap bölgesinin adresi ise stack’tadir. Stacktaki adres referans olarak kullanılarak Heapteki veriye erişilir. Stack ise heap’e göre daha hızlıdır.