0Pricing
Java Academy · Ders

JIT Derlemesi ve Katmanlı Derleme

JVM'nin sık kullanılan yöntemleri nasıl yorumladığını, ardından JIT ile derlediğini ve derlemeyi nasıl tetikleyip gözlemleyeceğinizi öğrenin.

JIT Derlemesi ve Katmanlı Derleme, 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.

Yorumlayıcı ve JIT

JVM başlangıçta bayt kodunu yorumlar. Bir yöntem sık çağrıldığında ("sıcak" olduğunda), JIT derleyicisi onu çok daha hızlı yürütme için yerel makine koduna derler.

Katmanlı Derleme (Java 8'den Beri Varsayılan)

Katmanlı derleme beş katman kullanır: T0 (yorumlayıcı), T1 (basit C1), T2 (sınırlı profil oluşturmalı C1), T3 (tam profil oluşturmalı C1), T4 (tamamen optimize edilmiş C2). Yöntemler daha sıcak hâle geldikçe üst katmanlara taşınır.

// Enable/disable tiered compilation:
// -XX:+TieredCompilation   (default ON in Java 8+)
// -XX:-TieredCompilation   (disables — only C2 used)

C1 Derleyicisi (İstemci Derleyicisi)

C1, orta düzeyde optimizasyonla hızlı derleme yapar. C2'nin kullanacağı çağrı sıklıklarını ve dallanma sonuçlarını ölçmek için profil oluşturma araçları ekler.

C2 Derleyicisi (Sunucu Derleyicisi)

C2 (Opto), satır içine yerleştirme, kaçış analizi, döngü açma, vektörleştirme ve ölü kodu kaldırma gibi derin optimizasyonlar gerçekleştirir. En hızlı yerel kodu üretir, ancak derlenmesi daha uzun sürer.

// Force server JIT only:
java -server MyApp
// Or explicitly:
java -XX:-TieredCompilation MyApp   // uses C2 only (warm-up is slower)

Sıcak Nokta Eşiği

Bir yöntem, çağrı sayacı eşiği aşıldıktan sonra JIT ile derlenir. Varsayılan: 10.000 çağrı (C2). -XX:CompileThreshold=N ile ayarlayın.

// Lower threshold for faster warm-up (at cost of less optimization):
java -XX:CompileThreshold=1000 MyApp

Satır İçine Yerleştirme

Satır içine yerleştirme, C2'nin en etkili optimizasyonudur: sıcak koddan çağrılan küçük yöntemler çağrı noktasına kopyalanarak yerleştirilir; böylece yöntem yönlendirme ek yükü ortadan kaldırılır ve daha ileri optimizasyonlar mümkün olur.

// Check inlining decisions:
java -XX:+PrintInlining -XX:+UnlockDiagnosticVMOptions MyApp
// Output:
// @ 5  com.example.User::getName (5 bytes)   inlined

Kaçış Analizi

C2, bir nesnenin geçerli yöntemden (veya iş parçacığından) hiçbir zaman dışarı çıkmadığını belirlerse, onu yığın yerine yığın belleğinde ayırabilir; böylece çöp toplama baskısını tamamen ortadan kaldırır.

// Objects that don't escape are stack-allocated:
String result = new StringBuilder().append("Hello ").append(name).toString();
// The StringBuilder may be eliminated by escape analysis

JIT Derleme Günlükleri

Derlenirken her yöntemi günlüğe kaydetmek için -XX:+PrintCompilation kullanın. Çıktı, yöntem adını, katmanı ve derleme bayraklarını gösterir.

// java -XX:+PrintCompilation MyApp
// Output:
//    1   n    java.lang.String::hashCode (0 bytes)
//   25   3    com.example.UserService::findById (42 bytes)
//   31   4    com.example.UserService::findById (42 bytes) made not entrant

Optimizasyonu Geri Alma

Bir JIT varsayımı ihlal edilirse (örneğin, çağrı noktasının alıcı türünü değiştiren bir sınıf yüklenirse), C2 optimizasyonu geri alır; yorumlayıcıya veya C1'e döner. Bu normaldir ve genellikle görünür bir etkisi yoktur.

Isınma Süresi

JIT derlemesi zaman alır. Kısa ömürlü işlemlerde yöntemler hiçbir zaman JIT ile derlenmeyebilir. Daha hızlı başlangıç için zamanından önce derleme (GraalVM Native Image) kullanın veya JIT sonuçlarını Sınıf Verisi Paylaşımı (CDS) ile önbelleğe alın.

// Enable AppCDS to cache JIT-compilable classes:
java -XX:ArchiveClassesAtExit=app.jsa -cp app.jar MyApp   # generate archive
java -XX:SharedArchiveFile=app.jsa -cp app.jar MyApp       # use archive

GraalVM JIT

GraalVM, C2'nin yerine Java ile yazılmış bir JIT kullanır. Daha iyi optimizasyonlar, Java dışındaki diller için JIT kullanabilme olanağı ve Native Image'ın (zamanından önce derleme) temelini sağlar.

Kısa Kontrol

Küçük yöntemleri çağıran yöntemin içine birleştirerek yöntem çağrısı ek yükünü ortadan kaldıran JIT derleme tekniği nedir?

Özet

Katmanlı derleme, yöntemleri C1'den (hızlı derleme, profil oluşturma) C2'ye (derin optimizasyon) taşır. Temel optimizasyonlar: satır içine yerleştirme, kaçış analizi, döngü açma. JIT kararlarını gözlemlemek için -XX:+PrintCompilation kullanın. Kıyaslama yapmadan önce uygulamayı ısıtın.

Sıkça Sorulan Sorular

“JIT Derlemesi ve Katmanlı Derleme” dersi ücretsiz mi?

Evet — “JIT Derlemesi ve Katmanlı Derleme” 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.

“JIT Derlemesi ve Katmanlı Derleme” dersinde ne öğreneceğim?

JVM'nin sık kullanılan yöntemleri nasıl yorumladığını, ardından JIT ile derlediğini ve derlemeyi nasıl tetikleyip gözlemleyeceğinizi öğrenin. 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.

“JIT Derlemesi ve Katmanlı Derleme” 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. Sınıf Yükleme Aşamaları: Yükleme, Bağlama, Başlatma
  2. ClassLoader Hiyerarşisi ve Özel Yükleyiciler
  3. javap ile Bayt Kodunu İnceleme
  4. JIT Derlemesi ve Katmanlı Derleme
← Java Academy Sayfasına Dön