Sobes.tech
Junior — Middle

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 new operatö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
}