0Pricing
Java Academy · Ders

JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü

Young Generation (Eden, Survivor), Old Generation ve Metaspace'i; nesnelerin bunlar arasında nasıl taşındığını inceleyin.

JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

JVM Bellek Modeli

JVM belleği birkaç alana böler. Öbek, tüm sınıf örneklerini ve dizileri tutar. Öbek dışı alanlar arasında Metaspace (sınıf üst verileri), yığın çerçeveleri ve native bellek bulunur.

Genç Nesil: Eden Alanı

Yeni ayrılan nesneler Eden'a gider. Eden dolduğunda küçük bir çöp toplama işlemi çalışır. Hayatta kalan nesneler bir Hayatta Kalan alanına kopyalanır.

// Object allocation starts in Eden:
String s = new String("hello");  // allocated in Eden
List<Integer> list = new ArrayList<>();  // also Eden

Hayatta Kalan Alanları: S0 ve S1

İki Hayatta Kalan alanı (S0 ve S1), en az bir çöp toplama işleminden sağ çıkan nesneleri tutar. Nesneler her küçük çöp toplama işleminde S0 ile S1 arasında dönüşümlü olarak taşınır. Yaş sayaçları artırılır.

Yaşlandırma Eşiği

Bir nesnenin yaşı yaşlandırma eşiğini (varsayılan olarak 15) aştığında Eski Nesil'e taşınır. Büyük nesneler Genç Nesil'i atlayıp doğrudan Eski Nesil'e gidebilir.

// JVM flags:
// -XX:MaxTenuringThreshold=15  (default)
// -XX:PretenureSizeThreshold=1m  (objects > 1MB go directly to Old Gen)

Eski Nesil (Yaşlandırılmış Alan)

Uzun ömürlü nesneler Eski Nesil'de bulunur. Büyük (Tam) çöp toplama işlemleri Eski Nesil'i toplar ve daha maliyetlidir. Uzun ömürlü nesne sayısını azaltmak, Tam çöp toplama sıklığını düşürür.

Metaspace (Java 8 ve sonrası)

Metaspace, Java 8'de PermGen'in yerini aldı. Sınıf üst verilerini, yöntem bayt kodunu ve paylaşıma alınmış dizeleri tutar. native belleği kullanır ve dinamik olarak büyür (-XX:MaxMetaspaceSize ile sınırlandırılır).

// Flag examples:
// -XX:MetaspaceSize=64m        (initial Metaspace size)
// -XX:MaxMetaspaceSize=256m   (cap to avoid native OOM)

Nesne Ayırmanın Hızlı Yolu

JVM, eşzamanlama olmadan Eden'dan bellek ayırmak için iş parçacığına yerel ayırma arabelleklerini (TLAB'ler) kullanır. Her iş parçacığının kendine ait küçük bir Eden dilimi vardır.

Nesne Yaşam Döngüsü: Erişilebilirlik

Bir nesne, bir çöp toplama kökünden (yığın değişkeni, statik alan veya JNI başvurusu) erişilebiliyorsa canlıdır. Erişilemeyen nesneler toplama için adaydır.

Object a = new Object(); // reachable via local variable
a = null;                 // now unreachable — eligible for GC

Yumuşak, Zayıf ve Hayalet Başvurular

SoftReference, OOM oluşmadan önce temizlenir (önbellekler için kullanılır). WeakReference, bir sonraki çöp toplama işleminde temizlenir. PhantomReference, sonlandırma sonrası temizlik için kullanılır.

Cache<String, Image> cache = new LinkedHashMap<>();
// Use SoftReference to let GC reclaim cache under memory pressure:
SoftReference<Image> ref = new SoftReference<>(loadHeavyImage());
Image img = ref.get(); // null if GC collected it

Nesne Sonlandırma (Kaçının)

finalize() kullanımdan kaldırılmıştır ve öngörülemezdir; çöp toplama işlemi nesneyi toplamadan önce bu yöntemi çağırır, ancak zamanlama garanti edilmez. Bunun yerine Cleaner (Java 9 ve sonrası) veya kaynakları try ile yönetme yaklaşımını kullanın.

Öbek Boyutlandırma Seçenekleri

Öbeği başlangıç boyutu için -Xms, en büyük boyutu için -Xmx ile denetleyin. Öbek yeniden boyutlandırma duraklamalarını önlemek için üretimde bu değerleri eşit ayarlayın.

// Recommended production flags:
// -Xms512m -Xmx512m   (fix heap to 512 MB)
// -XX:NewRatio=2       (Old:Young = 2:1)

Hızlı Kontrol

Yeni ayrılan bir nesne JVM öbeğinde ilk olarak nerede bulunur?

Özet

JVM öbeği, Genç Nesil'e (Eden ve Hayatta Kalan alanları) ve Eski Nesil'e sahiptir. Nesneler küçük çöp toplama işlemleri boyunca yaşlanır ve üst nesile taşınır. Metaspace, sınıf üst verilerini tutar. Belleği -Xms/-Xmx ve ayarlama seçenekleriyle denetleyin.

Sıkça Sorulan Sorular

“JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü” dersi ücretsiz mi?

Evet — “JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü” dersinde ne öğreneceğim?

Young Generation (Eden, Survivor), Old Generation ve Metaspace'i; nesnelerin bunlar arasında nasıl taşındığını inceleyin. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü
  2. GC Algoritmaları: Serial, G1, ZGC, Shenandoah
  3. Bellek Sızıntılarını Algılama ve Düzeltme
  4. GC Ayarlama Bayrakları ve JVisualVM Profillemesi
← Java Academy Sayfasına Dön