Java
Özet - JVM internals
Sınıf yükleyici, bytecode ve JIT'i birleştirerek bir JVM inceleme yazarsın.
Özet - JVM internals
Bu grupta JVM mimarisini, sınıf yükleyiciyi, bayt kodunu, JIT derleyiciyi ve çalışma zamanı veri alanlarını gördün. JVM; sınıf yükleyici, veri alanları ve uygulama motorundan oluşur.
Şimdi bunları bir mini görevde birleştireceksin: bir metot tanımlayıp sonucunu yazdıracak ve aynı kod parçası üzerinde Java sürümünü ve ana parçacık adını yazdıracaksın. Bu, JVM'in çalışma zamanında nasıl gozlemledigini göstermektedir.
Uygulama JVM bilgilerini yazdır
Bir Main sınıfı tanımla. main yönteminde üç satır yazdır: (1) Runtime.version().feature() sonucu, (2) Thread.currentThread().getName() sonucu, (3) String.class.getClassLoader() sonucu. Her biri ayrı bir System.out.println çağrısı olsun.
Örnek çözümü göster
public class Main {
public static void main(String[] args) {
System.out.println(Runtime.version().feature());
System.out.println(Thread.currentThread().getName());
System.out.println(String.class.getClassLoader());
}
}
Sırada ne var?
JVM'in temel mekanizmalarını öğrendin. Sonraki grupta hafıza modelini (memory model), happens-before ilişkisini, volatile ve final alanlarının garantilerini ve Metaspace bölgesini inceleyeceksin.
Bu grup; JVM mimarisi, sınıf yükleyici, bayt kodu, JIT ve veri alanlarını bir araya getirdi. Bir sonraki adımda eşzamanlı parçacıkların göreceliliğini ve görünürlük ilkelerini keşfedeceksin.
Uygulama Özet: metot ve sürüm
Yeni bir Summary sınıfı tanımla. int double_it(int n) metodu ekle; n * 2 döndürsün. main yönteminde double_it(21) çağrısını yap ve sonucu yazdır. Ayrıca Runtime.version().feature() sonucunu da yazdır.
Örnek çözümü göster
public class Summary {
int double_it(int n) {
return n * 2;
}
public static void main(String[] args) {
Summary s = new Summary();
System.out.println(s.double_it(21));
System.out.println(Runtime.version().feature());
}
}
Kendini test et
-
Bir metot sık çağrılınca JIT ne yapar?
- Metodu siler
- Metodu yorumlamayı bırakır
- Metodu başka sınıfa taşır
- Metodu makine koduna derler
Cevabı göster
Metodu makine koduna derler — JIT sıcak metotları makine koduna derler.
-
JVM özetini eşleştir
- Runtime.version()
- Java sürümünü verir
- String.class.getClassLoader()
- null döndürür
- Thread.currentThread()
- Şu anki parçacık
- javap -c
- Bayt kodu gösterir
Sıradaki ders: Heap ve stack