Java Sanal Makinesi'nde Stack ve Heap bellek alanları arasındaki temel farkları açıklayın
sobes.tech yapay zeka
AI'dan gelen yanıt
Java Sanal Makinesi belleği iki ana alana ayırır: Stack (yığın) ve Heap (yığın).
-
Stack (yığın) — metodların yerel değişkenlerinin ve fonksiyon çağrılarıyla ilgili bilgilerin (yığın çerçevesi) saklandığı bellek alanıdır. Her iş parçacığının kendi yığını vardır. Yığında verilere erişim çok hızlıdır, bellek metodlara giriş ve çıkış sırasında otomatik olarak tahsis edilir ve serbest bırakılır. Yığında temel veri tipleri ve nesne referansları saklanır.
-
Heap (yığın) — dinamik olarak
newoperatörüyle oluşturulan nesne ve dizilerin yer aldığı bellek alanıdır. Heap, tüm iş parçacıkları tarafından paylaşılır ve bellek yönetimi burada çöp toplayıcı (Garbage Collector) tarafından yapılır. Heap'teki nesneler, onlara referanslar olduğu sürece yaşamaya devam eder.
Kısaca:
- Stack: hızlı erişim sağlar, yerel değişkenleri ve metod çağrılarını tutar, boyutu sınırlıdır.
- Heap: nesneleri tutar, çöp toplayıcı tarafından yönetilir, genellikle daha büyük ve dinamik boyutludur.
Örnek:
public void örnek() {
int a = 10; // a değişkeni yığında saklanır
MyObject obj = new MyObject(); // obj referansı yığında, nesne heap'te
}