0Pricing
Java Academy · Ders

Yaygın JVM Ayarlama Bayrakları

Yığın, GC ve JIT seçenekleri

Yaygın JVM Ayarlama Bayrakları, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. 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'yi Neden Ayarlamalı

JVM'nin makul varsayılanları vardır; ancak yoğun hizmetlerde bazen yığın boyutunu, çöp toplayıcıyı ve tam zamanında derleme davranışını ayarlamanız gerekir.

Ayarlama son adımdır: önce profil oluşturun, kodu düzeltin, ardından yalnızca ölçümler bunu haklı çıkardığında seçeneklere başvurun.

Yığın Boyutu: -Xms ve -Xmx

En yaygın iki seçenek yığın sınırlarını belirler:

  • -Xms — başlangıç yığın boyutu.
  • -Xmx — en yüksek yığın boyutu.

Örnek: java -Xms512m -Xmx2g MyApp. -Xms değerini -Xmx değerine eşitlemek, uzun süre çalışan sunucularda yeniden boyutlandırma duraklamalarını önler.

Varsayılanları Okuma

JVM'nin hangi değerleri seçtiğini sorabilirsiniz. Runtime mevcut yığın sayılarını sunar ve -XX:+PrintFlagsFinal her seçeneğin etkin değerini döker.

Örnek, çalışan JVM'nin bellek sınırlarını yazdırır.

public class Main {
    public static void main(String[] args) {
        Runtime rt = Runtime.getRuntime();
        long mb = 1024 * 1024;
        System.out.println("Max heap (Xmx): " + (rt.maxMemory() / mb) + " MB");
        System.out.println("Total heap now: " + (rt.totalMemory() / mb) + " MB");
        System.out.println("Free in heap: " + (rt.freeMemory() / mb) + " MB");
        System.out.println("Available cores: " + rt.availableProcessors());
    }
}

Bir Toplayıcı Seçme

Modern JDK'lar çeşitli çöp toplayıcılar sunar:

  • -XX:+UseG1GC — varsayılan; dengeli ve bölge tabanlı.
  • -XX:+UseZGC — çok düşük duraklama, büyük yığınlar.
  • -XX:+UseParallelGC — en yüksek işlem hacmi, daha uzun duraklamalar.
  • -XX:+UseSerialGC — tek iş parçacıklı; küçük uygulamalar ve kapsayıcılar için.

G1 Duraklama Hedefi

G1, duraklama süresine odaklanan bir toplayıcıdır. Ona bir hedef verirsiniz ve bu hedefi karşılamaya çalışır:

  • -XX:MaxGCPauseMillis=200, G1'den duraklamaları 200 ms civarında tutmasını ister.

Bu bir garanti değil, esnek bir hedeftir. Değeri çok düşük ayarlamak sık ve küçük toplamaları zorlayabilir; bu da işlem hacmine zarar verebilir.

Düşük Gecikme İçin ZGC

Çok gigabaytlık yığınlarda bile duraklama sürelerinin milisaniyenin altında kalması gerekiyorsa -XX:+UseZGC ile ZGC kullanın.

İşlerinin çoğunu uygulama iş parçacıklarıyla eşzamanlı olarak yürütür. Bunun karşılığında G1'e kıyasla biraz daha fazla CPU ve bellek ek yükü oluşur. Gecikmeye duyarlı hizmetler için idealdir.

Çöp Toplama Günlüklemesi

Çöp toplamayı ayarlamak için onu görmeniz gerekir. Birleşik günlüklemeyi etkinleştirin:

  • -Xlog:gc*:file=gc.log:time,uptime,level,tags

Bu seçenek her toplamayı zaman damgaları ve sürelerle birlikte kaydeder. Herhangi bir seçeneği değiştirmeden önce uzun veya sık duraklamaları fark etmek için günlüğü bir görüntüleyiciye (veya JMC/JFR'ye) aktarın.

Kapsayıcılar ve CPU

Kapsayıcıların içinde JVM, denetim grubu sınırlarını okur. Varsayılan olarak yığın için bellek sınırının bir bölümünü kullanır.

  • -XX:MaxRAMPercentage=75.0, yığını kapsayıcı belleğinin yüzdesi olarak belirler.
  • -XX:ActiveProcessorCount=N, algılanan CPU sayısını geçersiz kılar.

Bu, aksi halde düzenleyicinin sonlandıracağı kadar fazla bellek tahsis edilmesini önler.

JIT ve Tanılama Bayrakları

Birkaç kullanışlı bayrak daha:

  • -XX:+HeapDumpOnOutOfMemoryError — OOM durumunda olay sonrası inceleme için yığın dökümü alır.
  • -XX:HeapDumpPath=/tmp — dökümün yazılacağı konumu belirtir.
  • -XX:+PrintCompilation — JIT derleme etkinliğini görmenizi sağlar.

Bunların maliyeti düşüktür; bir şeyler ters gittiğinde büyük fayda sağlarlar.

Bayrakları Ayarlama Disiplini

Bayraklar için altın kurallar:

  • Her seferinde tek bir bayrağı değiştirin ve temel ölçümle karşılaştırarak yeniden ölçüm yapın.
  • Bayrakları blog yazılarından körü körüne kopyalamayın — bu bayraklar eski bir JVM'i hedefliyor olabilir.
  • Çoğu uygulamanın yalnızca -Xmx'e ve belki bir çöp toplayıcı seçimine ihtiyacı vardır; varsayılanlar genellikle yeterlidir.

Meta Alanı ve İş Parçacıkları

Yığın, tek bellek bölgesi değildir:

  • -XX:MaxMetaspaceSize, sınıf meta verileri için ayrılan alanı sınırlar; bu sınır olmadan sınıf yükleme kaynaklı bir sızıntı yerel belleği tüketebilir.
  • -Xss, her iş parçacığının yığın boyutunu belirler; çok fazla iş parçacığı çalıştırıyorsanız bu değeri düşürün, derin özyineleme kullanıyorsanız yükseltin.

Bunların ayarlanması nadiren gerekir; ancak sorun yığında değil de yerel bellekte olduğunda bu seçeneklerin varlığını bilmek yardımcı olur.

Hızlı Kontrol

-Xms ve -Xmx bayrakları neyi denetler?

Özet

Bilinmesi gereken bayraklar:

  • -Xms / -Xmx, yığın sınırlarını belirler.
  • Bir çöp toplayıcı seçin: G1 (varsayılan), ZGC (düşük duraklama), Paralel (iş hacmi).
  • G1 için -XX:MaxGCPauseMillis değerini ayarlayın; gözlemlemek için -Xlog:gc* seçeneğini etkinleştirin.
  • Kapsayıcılarda MaxRAMPercentage kullanın ve güvenlik amacıyla HeapDumpOnOutOfMemoryError seçeneğini kullanın.
  • Her seferinde tek bir bayrağı değiştirin ve ölçüm yapın.

Sıkça Sorulan Sorular

“Yaygın JVM Ayarlama Bayrakları” dersi ücretsiz mi?

Evet — “Yaygın JVM Ayarlama Bayrakları” 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.

“Yaygın JVM Ayarlama Bayrakları” dersinde ne öğreneceğim?

Yığın, GC ve JIT seçenekleri 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 4. dersidir.

“Yaygın JVM Ayarlama Bayrakları” 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. Darboğazları Belirleme
  2. Java Flight Recorder
  3. JDK Mission Control ile Analiz
  4. Yaygın JVM Ayarlama Bayrakları
← Java Academy Sayfasına Dön