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.
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 MBParalel Çö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 crunchingG1 Çö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 workloadsG1 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 workloadsNesilsel 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.
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
- JVM Yığın Bölgeleri ve Nesne Yaşam Döngüsü
- GC Algoritmaları: Serial, G1, ZGC, Shenandoah
- Bellek Sızıntılarını Algılama ve Düzeltme
- GC Ayarlama Bayrakları ve JVisualVM Profillemesi