Bellek Nedir? Bilgisayarda çesitli programlarin çalistirildigi , geçici veya kalici bilgilerin bulunacagi hafiza alanlaridir.
Bilgisayarlar, uygulanan programları ve bu programların kullandığı veriyi tutar. Değer ve başvuru türleri arasındaki farkları anlamak için, bellekte verinin nasıl düzenlendiğini anlamak yararlı olacaktır.
İşletim sistemleri ve çalışma zamanları sık sık veriyi tutmak için kullanlan belleği her biri ayrı olarak yönetilen iki büyük parçaya ayırır. Belleğin iki küçük parçasına yığın(stack) ve öbek(heap) adı verilir. Yığın ve öbek çok farklı amaçlara hizmet eder.
- Bir yöntemi çağırdığınızda, o yöntemin parametreleri ve yerel değişkenleri için gerekli bellek her zaman yığından alınır. Yöntem bittiğinde(değerini döndürdüğünde yada bir özel durum oluşturduğunda), parametreler ve yerel değişkenler için alınan bellek otomatik olarak yığına geri verilir.
- new anahtar sözcüğünü kullanarak bir nesne(sınıfın oluşumu) yarattığınızda, nesneyi oluşturmak için gerekli bellek her zaman öbekten alınır. Bir nesneye son başvuru yok olduğunda, nesne tarafından kullanılan bellek, yeniden kullanıma uygun hale gelir(hemen yeniden kullanılabilir.)
Not: Tüm değer türleri yığın üzerinde yaratılır. Tüm başvuru türleri (nesneler) ise öbek üzerinde yaratılır (başvurunun kendisi de yığın üzerinde olduğu halde). Boş olabilen türler aslında başvuru türleridir ve öbek üzerinden yaratılırlar.
Yığın ve öbek adları, çalışma zamanının belleği yönetme biçiminden gelir:
- Yığın belleği, üst üste yığılan kutular gibi düzenlenir. Bir yöntem çağrıldığında, her parametre yığınının en üstünde bulunan kutuya yerleştirilir. Her yerel değişken, bir kutu atamak gibidir ve yığın üzerindeki kutuların en üstüne yerleştirilirler. Bir yöntem bittiğinde, yöntemin tüm kutuları yığından kaldırılır.
- Öbek belleği, üst üste yığılmış kutulardan çok odaya saçılmış kutulara benzer. Her kutunun üzerinde kullanımda olup olmadığını gösteren bir etiket vardır. Yani bir nesne yaratıldığında, çalışma zamanı boş kutu arar ve bulduğu boş kutuyu nesneye tahsis eder. Nesneye başvuru yığın üzerindeki bir yerel değişkende
saklanır. Çalışma zamanı her kutuya başvuru numarasını izler(iki değişkenin aynı nesneye başvurabileceğini hatırlayın). Son başvuru yok olduğunda, çalışma zamanı kutuyu kullanımda değil olarak işaretler ve daha sonraki bir zamanda kutuyu boş olarak işaretleyerek yeniden kullanıma hazır hale getirir.
Kaynak John Csharp
Adım Adım C#
Hiç yorum yok:
Yorum Gönder