Java Flight Recorder
Düşük ek yüklü profil oluşturma
Java Flight Recorder, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
JFR Nedir
Java Uçuş Kaydedicisi (JFR), doğrudan JVM içine yerleştirilmiş bir profilleme ve olay toplama motorudur.
Ayrıntılı çalışma zamanı olaylarını — yöntem örneklerini, bellek ayırmalarını, çöp toplamayı, kilitleri ve IO'yu — çok düşük ek yükle ikili bir .jfr dosyasına kaydeder. JDK ile birlikte gelir; ek bir aracıya gerek yoktur.
Düşük Ek Yük Neden Önemlidir
Geleneksel araçlamalı profilleyiciler bir uygulamayı 2 kat veya daha fazla yavaşlatabilir ve görmek istediğiniz ölçümleri çarpıtabilir.
JFR, genellikle yaklaşık %1 ek yükle üretimde çalışacak şekilde tasarlanmıştır. Böylece onu açık bırakabilir ve yalnızca laboratuvarda değil, gerçek bir olay gerçekleştiğinde de kayıt alabilirsiniz.
Başlangıçta Kayıt Başlatma
Uygulamanızı başlatırken bir JVM seçeneğiyle JFR'yi etkinleştirin:
-XX:StartFlightRecording=duration=60s,filename=app.jfr
Bu işlem 60 saniyelik olayları kaydeder ve ardından bunları app.jfr dosyasına yazar. JVM sonlanana kadar devam eden bir kayıt da başlatabilirsiniz.
jcmd ile Denetleme
Çalışan bir JVM üzerinde jcmd kullanarak kayıtları başlatabilir, durdurabilir ve dökümünü alabilirsiniz:
jcmd <pid> JFR.start name=rec settings=profilejcmd <pid> JFR.dump name=rec filename=out.jfrjcmd <pid> JFR.stop name=rec
Bu yöntem, düzgün çalışmayan bir süreçten anlık görüntü almak için idealdir.
Ayarlar: varsayılan ve profil
JFR, yerleşik iki yapılandırmayla birlikte gelir:
- varsayılan — en düşük ek yük; sürekli üretim kullanımı için güvenlidir.
- profil — daha ayrıntılı örnekleme ve biraz daha yüksek maliyet; odaklı incelemeler için uygundur.
settings=profile ile seçim yapın. Tek tek olayları ayarlamak için özel bir .jfc yapılandırması da yazabilirsiniz.
JFR'nin Kaydettikleri
JFR, aşağıdakiler de dahil olmak üzere zengin bir olay kümesi yakalar:
- Yürütme örnekleri (CPU zamanının nereye harcandığı).
- Nesne ayırma ve TLAB etkinliği.
- Çöp toplama duraklamaları.
- Kilit çekişmesi (
jdk.JavaMonitorWait). - Dosya ve soket IO'su, iş parçacıklarının bekletilmesi ve özel durumlar.
Her olayda bir zaman damgası, süre ve çağrı yığını izlemesi bulunur.
Özel Olaylar
İş mantığını zamanlamak için kendi JFR olaylarınızı tanımlayabilirsiniz. jdk.jfr.Event sınıfını genişletin, ona bir ek açıklama ekleyin, ardından işin çevresinde begin() / commit() çağrılarını yapın.
Bu, JFR'nin bağımsız kullanıma uygun API bölümüdür. Gerçek kayıt için yine JVM seçenekleri gerekir; ancak olay sınıfı her JDK üzerinde derlenir ve çalışır.
import jdk.jfr.Event;
import jdk.jfr.Label;
public class Main {
@Label("Order Processing")
static class OrderEvent extends Event {
@Label("Order Id") int orderId;
}
public static void main(String[] args) {
OrderEvent e = new OrderEvent();
e.orderId = 42;
e.begin();
// ... do the work being measured ...
e.commit();
System.out.println("Custom JFR event committed for order " + e.orderId);
}
}Sürekli Kayıt
Uzun süre çalışan hizmetlerde, boyutu veya yaşı sınırlandırılmış bir kayıtla (bir halka arabelleği) sürekli kayıt yürütün.
Yeni olaylar geldikçe eski olaylar atılır; böylece disk kullanımı sınırlandırılmış kalır. Bir olay gerçekleştiğinde arabelleğin dökümünü alarak olaydan önceki dakikalara anında erişebilirsiniz.
Çıkışta Döküm Alma
Bir kayıt başlatma seçeneğine dumponexit=true eklediğinizde JFR, JVM kapanırken arabelleği yazar.
Arabellek boyutunu ayarlamak için -XX:FlightRecorderOptions ile birlikte kullanın. Böylece sonlanmak üzere olan bir süreçten bile veri yakalamanız garanti edilir.
Dosyayı Okuma
.jfr dosyası ikili biçimdedir. Dosyayı görsel olarak JDK Görev Denetimi ile (sonraki derste) veya jdk.jfr.consumer API'si ve RecordingFile ile program aracılığıyla analiz edebilirsiniz.
Komut satırındaki jfr print app.jfr komutu da hızlı metin araması için olayları metin olarak dökebilir.
Olayları Canlı Akışla İzleme
JDK 14'ten bu yana JFR, jdk.jfr.consumer.RecordingStream API'si aracılığıyla olay akışını destekler.
Bir dosyanın dökümünü alıp daha sonra açmak yerine, olaylara gerçekleştiği anda abone olabilir ve gerçek zamanlı tepki verebilirsiniz — örneğin çöp toplama duraklamaları bir eşiği aştığında uyarı verebilirsiniz. Böylece JFR yalnızca olay sonrası inceleme aracı olmaktan çıkar ve canlı bir izleme kaynağına dönüşür.
Hızlı Kontrol
JFR'nin üretimde çalışır durumda bırakılabilmesinin temel nedeni nedir?
Özet
JFR, JVM'nin yerleşik uçuş veri kaydedicisidir:
.jfrdosyalarına düşük ek yükle ve üretim için güvenli biçimde olay toplar.-XX:StartFlightRecordingveyajcmd JFR.startaracılığıyla başlatılır.- varsayılan veya profil ayarlarını seçin; özel olaylar tanımlayın.
- Sürekli halka arabelleği kaydını ve
dumponexitseçeneğini kullanın. - Sonraki adımda JDK Görev Denetimi'nde analiz edin.
Sıkça Sorulan Sorular
“Java Flight Recorder” dersi ücretsiz mi?
Evet — “Java Flight Recorder” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Java Flight Recorder” dersinde ne öğreneceğim?
Düşük ek yüklü profil oluşturma Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Java Flight Recorder” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Darboğazları Belirleme
- Java Flight Recorder
- JDK Mission Control ile Analiz
- Yaygın JVM Ayarlama Bayrakları