Java Academy · Ders

GC Algoritmaları: Serial, G1, ZGC, Shenandoah

Modern JVM toplayıcıları arasındaki GC duraklama özelliklerini ve aktarım hızı ödünleşimlerini karşılaştırın.

2. ders / 413 adım

GC Algoritmaları: Serial, G1, ZGC, Shenandoah, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. 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.

Çöp Toplama Algoritması Seçme

JVM, her biri farklı iş yükleri için iyileştirilmiş birden çok çöp toplama algoritması sunar. Doğru seçimi yapmak öbek boyutuna, gecikme gereksinimlerine ve iş hacmi hedeflerine bağlıdır.

// Enable GC algorithms:
// -XX:+UseSerialGC
// -XX:+UseParallelGC
// -XX:+UseG1GC       (default since Java 9)
// -XX:+UseZGC        (Java 15+ production)
// -XX:+UseShenandoahGC (Red Hat / OpenJDK builds)

Seri Çöp Toplama

Seri çöp toplama, toplama için tek bir iş parçacığı kullanır. Çöp toplama sırasında tüm uygulama iş parçacıkları durur ("dünyayı durdur"). Yalnızca küçük öbekler veya gömülü sistemler gibi tek CPU'lu ortamlar için uygundur.

// Use:
// java -XX:+UseSerialGC -Xmx256m MyApp
// Pauses: long (proportional to heap size)
// Throughput: low
// Best for: CLI tools, small heaps < 100 MB

Paralel Çöp Toplama (İş Hacmi Toplayıcısı)

Paralel çöp toplama, küçük ve büyük çöp toplama işlemleri için birden çok iş parçacığı kullanır. Dünyayı durdurma duraklamaları Seriden daha kısadır, ancak yine de önemlidir. Gecikmeden çok iş hacminin önemli olduğu toplu işlemler için en uygunudur.

// Use:
// java -XX:+UseParallelGC -XX:ParallelGCThreads=8 MyApp
// Pauses: moderate
// Throughput: high
// Best for: batch jobs, number crunching

G1 Çöp Toplama (Önce Çöp)

G1, öbeği eşit boyutlu bölgelere (~2 KB – 32 MB) böler. Yapılandırılabilir bir duraklama hedefini karşılamak için en çok çöp içeren bölgeleri önce toplar. Java 9'dan beri varsayılandır.

// Use:
// java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 MyApp
// Pauses: bounded by target (but not guaranteed)
// Throughput: good
// Best for: large heaps (4 GB+), mixed workloads

G1 Bölge Türleri

G1 bölgeleri dinamik olarak Eden, Hayatta Kalan, Eski veya Devasa (bölge boyutunun %50'sinden büyük nesneler için) olarak atanır. Bu esneklik, artımlı toplamaya olanak tanır.

ZGC (Z Çöp Toplayıcısı)

ZGC, işin çoğunu uygulamayla eşzamanlı olarak gerçekleştirir. Duraklama süreleri, öbek boyutundan bağımsız olarak genellikle 1 ms'nin altındadır. Java 15'ten beri üretim kullanımına hazırdır.

// Use:
// java -XX:+UseZGC -Xmx16g MyApp
// Pauses: < 1 ms (usually)
// Throughput: slightly lower than G1 (concurrent work has CPU cost)
// Best for: large heaps, low-latency services (APIs, trading)

Shenandoah Çöp Toplama

Shenandoah (Red Hat) da eşzamanlı sıkıştırma sayesinde milisaniyenin altında duraklamalar sağlar. OpenJDK derlemelerinde kullanılabilir. ZGC ile hedefleri çok benzerdir, ancak farklı dahili algoritmalar kullanır.

// Use:
// java -XX:+UseShenandoahGC MyApp
// Available in: Red Hat builds, some AdoptOpenJDK distributions
// Pauses: sub-millisecond
// Best for: latency-sensitive workloads

Nesilsel ZGC (Java 21 ve sonrası)

Java 21, ZGC'nin düşük duraklama yaklaşımını nesilsel toplamayı birleştiren Nesilsel ZGC'yi kullanıma sundu. Böylece duraklamalar en düşük düzeyde tutulurken CPU ek yükü azaltılır.

// Enable in Java 21+:
// java -XX:+UseZGC -XX:+ZGenerational -Xmx8g MyApp

Çöp Toplama Duraklama Süresi ve İş Hacmi Ödünleşimi

Hiçbir çöp toplama algoritması her konuda en iyi değildir. Paralel çöp toplama iş hacmini en üst düzeye çıkarır. G1, iş hacmi ile gecikme arasında denge kurar. ZGC ve Shenandoah, iş hacminde küçük bir maliyet karşılığında duraklamaları en aza indirir.

Çöp Toplama Günlüğünü Etkinleştirme

Çöp toplama olaylarını -Xlog:gc*:file=gc.log:time,uptime,level ile günlüğe kaydedin. Uzun duraklamaları ve ayırma artışlarını bulmak için günlükleri GCViewer veya GCEasy gibi araçlarla analiz edin.

// JVM flags:
// -Xlog:gc*:file=gc.log:time,uptime,level,tags
// Inspect logs:
// cat gc.log | grep "Pause"

JVM Ölçümleriyle Çöp Toplamayı İzleme

Çöp toplama sayısını ve süresini program aracılığıyla okumak için ManagementFactory.getGarbageCollectorMXBeans() kullanın veya bunları Spring Boot uygulamalarında Micrometer aracılığıyla Prometheus'a aktarın.

ManagementFactory.getGarbageCollectorMXBeans().forEach(gc ->
    System.out.printf("%s: %d collections, %d ms%n",
        gc.getName(), gc.getCollectionCount(), gc.getCollectionTime()));

Hızlı Kontrol

Üretimde milisaniyenin altındaki duraklama sürelerini hangi çöp toplama algoritması hedefler?

Özet

Çok küçük öbekler için Seri çöp toplama, toplu iş hacmi için Paralel çöp toplama, dengeli iş yükleri için G1 (varsayılan), çok düşük gecikme için ZGC ve Shenandoah kullanılır. Sorunları erken tespit etmek için üretimde çöp toplama günlüğünü etkinleştirin.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Java öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
104
Dersler
374

Sıkça Sorulan Sorular

“GC Algoritmaları: Serial, G1, ZGC, Shenandoah” dersi ücretsiz mi?

Evet — “GC Algoritmaları: Serial, G1, ZGC, Shenandoah” 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.

“GC Algoritmaları: Serial, G1, ZGC, Shenandoah” dersinde ne öğreneceğim?

Modern JVM toplayıcıları arasındaki GC duraklama özelliklerini ve aktarım hızı ödünleşimlerini karşılaştırın. 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 2. dersidir.

“GC Algoritmaları: Serial, G1, ZGC, Shenandoah” 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