JIT derleyici
- Java kursu
- Uzman
- Ders 4/46
- 5 dk
JIT derleyici ve optimizasyonu öğrenirsin.
JIT derleyici
JIT (Just-In-Time) derleyici, sık çalışan bayt kodunu makine koduna çevirir. JVM önce bayt kodunu yorumlayarak çalıştırır; bir metot yeterince sık çağrılınca JIT onu derler ve sonraki çağrılar daha hızlı olur.
Java 21'de ana JIT, HotSpot C2'dir. JIT, önbellek (code cache) adlı bir bellek bölgesinde derlenmiş makine kodunu tutar. Bu, yorumlamaya göre büyük bir hız artışı sağlar.
JIT'in 'sıcak' (hot) kod tespiti çağrı sayisina dayanır; eşik değeri asan metotlar derlenir. Bu yuzden JVM 'ısınma' (warmup) süresi gerektirir.
Yorumlama ve derleme
JVM iki modda çalışır: yorumlama (interpretation) ve derleme (compilation). Yorumlama bayt kodunu satır satır çalıştırır; hızlı başlar ama yavaştır. Derleme ise sıcak metotları makine koduna çevirir; ilk maliyeti yüksektir ama sonraki çağrılar hızlıdır.
JVM bu ikisini tiered compilation ile birleştirir: önce hızlı başlamak için yorumlama, sonra hizlanmak için derleme. Bu, hem düşük ısınma süresi hem de yüksek tepe hız verir.
Uygulama Sıcak döngüyü çalıştır
Bir Main sınıfı tanımla. int sum(int n) metodu ekle; 1'den n'e kadar olan tamsayıları toplasın (for döngüsü ile). main yönteminde sum(100) çağrısını yap ve sonucu System.out.println ile yazdır.
Başlangıç kodu
public class Main {
// 1'den n'e kadar toplayan metot tanımla
public static void main(String[] args) {
// metodu 100 ile çağır ve yazdır
}
}Örnek çözüm
public class Main {
int sum(int n) {
int total = 0;
for (int i = 1; i <= n; i++) {
total += i;
}
return total;
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(m.sum(100));
}
}Beklenen çıktı
5050
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 JIT ne zaman devreye girer?
- Bir metot yeterince sıcak olduğunda Doğru cevap
- Sınıf yüklenir yüklenmez
- Derleme anında
- Program kapatılırken
Açıklama: JIT sıcak metotları derler; çağrı sayısı eşiği aşılınca devreye girer.
2 JIT kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
JIT |
Sıcak kodu makine koduna çevirir |
Code cache |
Derlenmiş kodu tutar |
Warmup |
Isınma süresi |
Tiered |
Yorumlama ve derlemeyi birleştirir |
3 Code cache tanımını tamamla
// JIT derlenmiş makine kodunu _code cache_ bölgesinde tutar
String cacheName = "____";
// JIT derlenmiş makine kodunu _code cache_ bölgesinde tutar
String cacheName = "code cache";
Açıklama: Derlenmiş kod code cache'te tutulur.