Yığın ve Yığın Bellek - Aralarındaki Fark
Yığın ve Yığın Belleği Arasındaki Temel Fark
- Yığın doğrusal bir veri yapısıdır, Heap ise hiyerarşik bir veri yapısıdır.
- Yığın belleği hiçbir zaman parçalanmaz, oysa Yığın belleği, bellek blokları önce tahsis edilip sonra serbest bırakıldıkça parçalanabilir.
- Stack yalnızca yerel değişkenlere erişirken Heap değişkenlere küresel olarak erişmenize izin verir.
- Yığın değişkenleri yeniden boyutlandırılamazken Heap değişkenleri yeniden boyutlandırılabilir.
- Yığın belleği bitişik bir blokta tahsis edilirken Yığın belleği herhangi bir rastgele sırada tahsis edilir.
- Yığın, değişkenlerin tahsisinin kaldırılmasını gerektirmezken, Yığın tahsisinin kaldırılması gerekir.
- Yığın tahsisi ve serbest bırakma, derleyici talimatları tarafından yapılırken, Yığın tahsisi ve serbest bırakma, programcı tarafından yapılır.
Yığın nedir?
Yığın, bir işlev tarafından oluşturulan geçici değişkenleri saklayan, bilgisayar belleğinin özel bir alanıdır. Yığında değişkenler çalışma zamanı sırasında bildirilir, saklanır ve başlatılır.
Geçici bir depolama belleğidir. Hesaplama görevi tamamlandığında değişkenin hafızası otomatik olarak silinecektir. Yığın bölümü çoğunlukla yöntemleri, yerel değişkenleri ve referans değişkenlerini içerir.
Yığın Nedir?
Yığın, programlama dilleri tarafından genel değişkenleri depolamak için kullanılan bir bellektir. Varsayılan olarak tüm global değişkenler yığın bellek alanında saklanır. Dinamik bellek tahsisini destekler.
Yığın sizin için otomatik olarak yönetilmez ve CPU tarafından o kadar sıkı yönetilmez. Daha çok hafızanın serbestçe yüzen bir bölgesi gibidir.
Yığın ve Yığın Arasındaki Temel Farklılıklar
Parametre | Yığın | yığın |
---|---|---|
Veri yapılarının türü | Yığın doğrusal bir veri yapısıdır. | Heap hiyerarşik bir veri yapısıdır. |
Erişim hızı | Yüksek hızlı erişim | Yığınla karşılaştırıldığında daha yavaş |
Alan yönetimi | Bellek hiçbir zaman parçalanmayacak şekilde işletim sistemi tarafından verimli bir şekilde yönetilen alan. | Yığın Alanı verimli bir şekilde kullanılmıyor. Bellek blokları önce tahsis edilip daha sonra serbest bırakıldıkça bellek parçalanabilir. |
giriş | Yalnızca yerel değişkenler | Değişkenlere global olarak erişmenizi sağlar. |
Alan boyutu sınırı | İşletim sistemine bağlı olarak yığın boyutu sınırı. | Bellek boyutunda belirli bir sınırlama yoktur. |
Yeniden boyutlandırma | Değişkenler yeniden boyutlandırılamaz | Değişkenler yeniden boyutlandırılabilir. |
Bellek Ayırma | Bellek bitişik bir blokta tahsis edilir. | Bellek herhangi bir rastgele sırada tahsis edilir. |
Tahsis ve Tahsis | Derleyici talimatlarıyla otomatik olarak yapılır. | Programcı tarafından manuel olarak yapılır. |
Serbest bırakma | Değişkenlerin tahsisinin kaldırılmasını gerektirmez. | Açık bir şekilde tahsisin kaldırılması gerekiyor. |
Ücret | Less | Daha Fazla |
Uygulama | Bir yığın, dinamik bellek kullanılarak basit dizi tabanlı ve Bağlantılı liste tabanlı olmak üzere 3 şekilde uygulanabilir. | Heap, dizi ve ağaçlar kullanılarak uygulanabilir. |
Ana mesele | Bellek yetersizliği | Bellek parçalanması |
Referans yeri | Otomatik derleme zamanı talimatları. | Yeterli |
Esneklik | Sabit boyut | Yeniden boyutlandırma mümkündür |
Erişim süresi | Daha hızlı | yavaş |
Yığın kullanmanın avantajları
Yığın kullanmanın artıları/yararları şunlardır:
- Bağlantılı liste ve dizide mümkün olmayan Son Giren İlk Çıkar (LIFO) yöntemiyle verileri yönetmenize yardımcı olur.
- Bir işlev çağrıldığında yerel değişkenler bir yığında saklanır ve geri döndürüldüğünde otomatik olarak yok edilir.
- Bir değişken bu fonksiyonun dışında kullanılmadığında yığın kullanılır.
- Belleğin nasıl tahsis edildiğini ve serbest bırakıldığını kontrol etmenizi sağlar.
- Stack nesneyi otomatik olarak temizler.
- Kolayca bozulmaz
- Değişkenler yeniden boyutlandırılamaz.
Heap kullanmanın avantajları
Yığın belleği kullanmanın artıları/yararları şunlardır:
- Heap en büyük ve minimum sayıyı bulmanıza yardımcı olur
- Çöp toplama, nesnenin kullandığı belleği boşaltmak için yığın belleğinde çalışır.
- Heap yöntemi aynı zamanda Öncelik Kuyruğunda da kullanılır.
- Değişkenlere global olarak erişmenizi sağlar.
- Heap'in bellek boyutunda herhangi bir sınırı yoktur.
Stack kullanmanın dezavantajları
Yığın belleği kullanmanın Eksileri/Dezavantajları şunlardır:
- Yığın belleği çok sınırlıdır.
- Yığın üzerinde çok fazla nesne oluşturmak yığın taşması riskini artırabilir.
- Rastgele erişim mümkün değildir.
- Değişken depolamanın üzerine yazılacaktır, bu da bazen işlevin veya programın tanımsız davranışına yol açacaktır.
- Yığın bellek alanının dışına düşecek ve bu durum anormal bir sonlandırmaya yol açabilecektir.
Heap kullanmanın dezavantajları
Heaps belleği kullanmanın eksileri/dezavantajları şunlardır:
- Bir işletim sisteminin sağlayabileceği maksimum belleği sağlayabilir
- Hesaplamak daha fazla zaman alır.
- Yığın belleğinde bellek yönetimi küresel olarak kullanıldığından daha karmaşıktır.
- Yürütme işlemi yığınla karşılaştırıldığında çok fazla zaman alır.
Heap veya stack ne zaman kullanılmalı?
Büyük bir bellek bloğu ayırmanız gerektiğinde yığın kullanmalısınız. Örneğin, büyük boyutlu bir dizi veya o değişkeni uzun süre ortalıkta tutacak büyük bir yapı oluşturmak istiyorsanız, onu heap'e tahsis etmelisiniz.
Ancak, yalnızca onları kullanan işlev canlı olana kadar gerekli olan nispeten küçük değişkenlerle çalışıyorsanız. O zaman daha hızlı ve daha kolay olan yığını kullanmanız gerekir.