JVM’in içi ve performans
Sınıf yükleme, bayt kodu, JIT ve çöp toplayıcıları ölçümle tanır; JFR ve yığın dökümleriyle yavaşlığı ve bellek sızıntısını bulup düzeltirsin.
Seviye 501 · 16 ders · 15 pratik lab
Dersler
Sınıflar ve bayt kodu
- Sınıf yükleyiciler ve modül yolu
- javap ile bayt kodu okumak
- JIT derleyici ve katmanlı derleme
- JMH ile doğru kıyaslama
- Kısa görev: iki yazımın bayt kodu farkını açıkla
Bellek ve çöp toplama
- Öbek düzeni, nesne başlığı ve kuşaklar
- G1, ZGC ve Parallel: hangisi ne zaman
- Çöp toplama günlüklerini okumak
- Yığın dökümü ile bellek sızıntısı bulmak
- Kısa görev: sızdıran önbelleği bul ve düzelt
Gözlem ve araçlar
- Java Flight Recorder ile kayıt almak
- jcmd ve jstat ile canlı JVM’i incelemek
- Konteynerde JVM: bellek sınırları ve ayarlar
- Başlangıç süresi: CDS ve sınıf verisi paylaşımı
- Kısa görev: gecikmesi yüksek servisi ölç ve ayarla
Bitirme
- Bitirme görevi: yük altında çöken servisin kök neden analizi ve düzeltmesi
Pratik lablar
- javap ile iki sürümün bayt kodunu karşılaştırmak: Aynı işi yapan iki metodun javap çıktısını karşılaştır ve farkı açıklayan kısa raporu üreten betiği tamamla.
- Yanlış sınıfın yüklenmesini teşhis etmek: İki JAR'da aynı adla bulunan sınıftan yanlış olanın yüklendiğini sınıf yükleme günlüğünden bul ve sınıf yolunu düzelt.
- Eklenti sınıf yükleyicisi sızıntısını gidermek: Her yeniden yüklemede eski sınıfların bellekte kaldığı eklenti sisteminde yükleyiciyi canlı tutan statik başvuruyu ve iş parçacığını bul, serbest bırak ve sınıf sayısının sabitlendiğini göster.
- İlk JMH kıyaslamasını yazmak: İki dizgi birleştirme yolu için ısınma ve ölçüm ayarları doğru bir JMH kıyaslaması yaz.
- Kıyaslamada elenen kodu düzeltmek: JIT'in sonucu kullanılmadığı için sildiği ve sabit girdiyi katladığı kıyaslamayı Blackhole ve State ile düzelt.
- JIT günlüğünden satır içi yerleştirme engelini bulmak: Sıcak döngüde çok biçimli çağrı yüzünden satır içine alınamayan metodu derleme günlüğünden bul; tasarımı sadeleştir ve kazancı JMH ile ölç.
- GC günlüğünden duraklamaları özetlemek: Hazır çöp toplama günlüğünden toplam duraklama süresini, en uzun duraklamayı ve toplama sayısını çıkaran aracı yaz.
- İş yüküne uygun toplayıcıyı seçmek: Aynı hizmeti G1, Parallel ve ZGC ile çalıştır; verim ve duraklama ölçümlerinden gecikme hedefine uyan toplayıcıyı seç ve seçimini belgeleyip doğrula.
- Erken terfi eden nesnelerin yol açtığı toplamaları azaltmak: Kısa ömürlü nesnelerin yaşlı kuşağa taştığı hizmette günlükten nedeni bul; ayırma düzenini ve kuşak ayarlarını değiştirerek tam toplama sayısını düşür.
- Yığın histogramından şüpheli sınıfı bulmak: jcmd ile sınıf histogramı al ve iki ölçüm arasında örnek sayısı en çok artan sınıfı raporla.
- Sızan önbelleği sınırlamak: Hiç boşaltılmayan statik haritayı boyut sınırlı ve süre sonlu önbellekle değiştir; uzun koşuda yığının sabit kaldığını göster.
- Yığın dökümünden sızıntının kökünü bulmak: OutOfMemoryError veren hizmetin yığın dökümünde baskın nesneleri ve onları tutan başvuru zincirini bul; kaldırılmayan dinleyiciyi düzelt ve yeniden ölç.
- Çalışan JVM'i jcmd ve jstat ile incelemek: Çalışan sürecin bayraklarını, yığın kullanımını ve toplama sayılarını jcmd ve jstat ile toplayıp tek özet üreten betiği yaz.
- Kaptaki JVM'in bellek ayarlarını düzeltmek: Bellek sınırlı kapta öldürülen hizmet için yığın yüzdesini, yığın dışı alanları ve iş parçacığı yığınlarını hesaba katan ayarları seç ve sınırın altında kaldığını ölç.
- Gecikmeyi JFR ile ölçüp ayarlamak: Yüksek gecikmeli hizmetten Flight Recorder kaydı al; kilit çekişmesi ve ayırma sıcak noktalarını gider, sınıf verisi paylaşımıyla açılış süresini kısalt ve ölçümlerle kanıtla.
Kurs hakkında
Sınıf yükleme, bayt kodu, JIT ve çöp toplayıcıları ölçümle tanır; JFR ve yığın dökümleriyle yavaşlığı ve bellek sızıntısını bulup düzeltirsin.
Ne öğreneceksin
- Sınıflar ve bayt kodu
- Bellek ve çöp toplama
- Gözlem ve araçlar
- Bitirme
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.