CodeBlanks Logo Icon CodeBlanks

Özet - Performans ve GC

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

Main.java
// PerfReport sınıfını tanımla: summary metodu araç özeti üretsin

// main: JMH için özet yazdır

Örnek çözüm

Main.java
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

Main.java
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

Main.java
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

Uzman bölümündeki tüm dersler