CodeBlanks Logo Icon CodeBlanks

Heap ve stack

Heap ve stack bellek bölgelerini öğrenirsin.

Heap ve stack

JVM belleği iki temel bölgeye ayırır. Yığın (stack) her yöntem çağrısı için ayrılır; yerel ilkel değişkenler ve nesne başvuruları burada tutulur. Öbek (heap) ise new ile oluşturulan tüm nesneler için kullanılır ve uygulamaya geneldir.

Örnek: int x = 5 yığında, Box b = new Box() ifadesinde b başvurusu yığında, nesnenin kendisi öbekte durur. Yığın yöntem bitince boşalır; öbek çöp toplayıcıya (garbage collector) kalır.

Başvuru ve nesne ayrımı

Bir değişken nesnenin kendisini değil, ona bir başvuruyu tutar. Başvuru yığında, nesne öbekte yaşar. İki değişken aynı nesneyi gösterebilir.

Örnek: Box a = new Box(); Box b = a;. Burada a ve b aynı öbek nesnesine başvurur; a.v = 9 değişikliği b.v üzerinden de görünür. İlkel türler ise doğrudan değerlerini yığında tutar; atama kopyalar. Bu ayrım, yan etki ve kopyalama davranışını belirler.

Uygulama Yığın ve öbeği birlikte kullan

Bir Box sınıfı tanımla: int v alanı ve Box(int v) kurucusu olsun. static int square(int n) yöntemi n * n döndürsün. main içinde int x = 5 tanımla, new Box(x) ile bir nesne oluştur ve square(b.v) sonucunu System.out.println ile yazdır.

Başlangıç kodu

Main.java
// Box sınıfını tanımla
// kare alma yöntemini ekle
// main içinde sonucu yazdır

Örnek çözüm

Main.java
class Box {
    int v;
    Box(int v) { this.v = v; }
}

public class MemoryDemo {
    static int square(int n) { return n * n; }
    public static void main(String[] args) {
        int x = 5;
        Box b = new Box(x);
        System.out.println(square(b.v));
    }
}

Beklenen çıktı

25

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 new ile oluşturulan nesne hangi bellek bölgesinde durur?

  • Yığında
  • Metaspace'te
  • Kayıt dizisinde
  • Öbekte Doğru cevap

Açıklama: new ile oluşturulan nesneler öbekte yaşar.

2 Nesne oluşturma işlecini tamamla

Soru
Box b = ____ Box(5);
Cevap
Box b = new Box(5);

Açıklama: new işleci öbekte nesne oluşturur.

3 Bellek bölgelerini eşleştir

Kavram Anlamı
Öbek new ile nesneler
Yığın Yerel değişkenler
Metaspace Sınıf metadata'sı

Uzman bölümündeki tüm dersler