Özet - Performans ve GC
- Java kursu
- Uzman
- Ders 36/46
- 5 dk
JMH, JFR ve GC ayarını birleştirerek optimize edilmiş bir işleyici yazarsın.
Özet - Performans ve GC
Bu grupta performans araç takımını tanıdın. JMH ile mikro kıyaslama, JFR ile profil çıkarma, GC ayarı ile gecikme ve verim dengesi, heap dump ile bellek sızıntısı ve JIT ile anlık derleme kavramlarını öğrendin.
Doğru yol: önce JMH ve JFR ile ölç, sonra GC ve yığın ayarını yap, gerekiyorsa JIT bayraklarına bak. Erken ayarlama yanıltır.
Uygulama PerfReport sınıfını yaz
class PerfReport tanımla; static String summary(String tool, String detail) metodu tool + ": " + detail döndürsün. main içinde System.out.println(summary("JMH", "warmup=3 iters=5")); yazdır.
Başlangıç kodu
// PerfReport sınıfını tanımla: summary metodu araç özeti üretsin
// main: JMH için özet yazdırÖrnek çözüm
class PerfReport {
static String summary(String tool, String detail) {
return tool + ": " + detail;
}
public static void main(String[] args) {
System.out.println(summary("JMH", "warmup=3 iters=5"));
}
}Beklenen çıktı
JMH: warmup=3 iters=5
Ne öğrendin?
Artık performans sorunlarını adım adım çözebilirsin: JMH ile darboğazı ölç, JFR ile üretim profilini çıkar, GC ve yığın ayarı ile gecikmeyi düşür, heap dump ile sızıntıyı bul. JIT ise çoğu zaman sana kapalı çalışır.
En önemli ilke: ölçmeden ayarlama. Her değişiklikten sonra tekrar ölç; iyileşmeyi sayılarla doğrula.
Uygulama PerfReport'a report metodunu ekle
Üstteki PerfReport sınıfına static String report() metodu ekle; summary("JMH", "warmup=3") + " | " + summary("JFR", "duration=60s") döndürsün. main içinde System.out.println(report()); ile yazdır.
Başlangıç kodu
class PerfReport {
static String summary(String tool, String detail) {
return tool + ": " + detail;
}
public static void main(String[] args) {
System.out.println(summary("JMH", "warmup=3 iters=5"));
}
}Örnek çözüm
class PerfReport {
static String summary(String tool, String detail) {
return tool + ": " + detail;
}
static String report() {
return summary("JMH", "warmup=3") + " | " + summary("JFR", "duration=60s");
}
public static void main(String[] args) {
System.out.println(report());
}
}Beklenen çıktı
JMH: warmup=3 | JFR: duration=60s
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Mikro kıyaslama için hangi araç kullanılır?
- JMH Doğru cevap
- JFR
- jcmd
- JIT
Açıklama: JMH küçük kod parçalarını doğru ölçer.
2 araçları özetle
| Kavram | Anlamı |
|---|---|
JMH |
Kıyaslama |
JFR |
Profil çıkarma |
G1 |
Çöp toplayıcı |
JIT |
Anlık derleme |