0Pricing
Java Academy · Pelajaran

Java Flight Recorder

Pembuatan profil dengan overhead rendah.

Java Flight Recorder adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Apa itu JFR

Java Perekam Penerbangan (JFR) adalah mesin pembuatan profil dan pengumpulan peristiwa yang terintegrasi langsung ke dalam JVM.

Mesin ini merekam peristiwa waktu berjalan secara terperinci — sampel metode, alokasi, pengumpulan sampah, kunci, IO — ke dalam berkas biner .jfr, dengan beban tambahan yang sangat rendah. Fitur ini disertakan bersama JDK; tidak diperlukan agen tambahan.

Mengapa Beban Tambahan Rendah Penting

Alat pembuatan profil berbasis instrumentasi tradisional dapat memperlambat aplikasi hingga dua kali lipat atau lebih, sehingga mengubah pengukuran yang ingin Anda amati.

JFR dirancang untuk berjalan di produksi, biasanya dengan beban tambahan sekitar 1%. Artinya, Anda dapat membiarkannya aktif dan mengambil rekaman saat insiden nyata terjadi, bukan hanya di laboratorium.

Memulai Rekaman Saat Peluncuran

Aktifkan JFR dengan opsi JVM saat memulai aplikasi:

  • -XX:StartFlightRecording=duration=60s,filename=app.jfr

Fitur ini merekam peristiwa selama 60 detik, lalu menuliskannya ke app.jfr. Anda juga dapat memulai rekaman yang berjalan hingga JVM keluar.

Mengontrol dari Baris Perintah

Anda juga dapat memulai, menghentikan, dan menyimpan isi rekaman pada JVM yang sedang berjalan melalui perintah baris perintah berikut:

  • jcmd <pid> JFR.start name=rec settings=profile
  • jcmd <pid> JFR.dump name=rec filename=out.jfr
  • jcmd <pid> JFR.stop name=rec

Ini ideal untuk mengambil cuplikan dari proses yang sudah mengalami masalah.

Setelan: bawaan vs profil

JFR menyediakan dua konfigurasi bawaan:

  • bawaan — beban tambahan minimal, aman untuk penggunaan produksi berkelanjutan.
  • profil — pengambilan sampel yang lebih terperinci, biaya sedikit lebih tinggi, untuk penyelidikan terarah.

Pilih dengan settings=profile. Anda juga dapat menulis konfigurasi .jfc khusus untuk menyesuaikan peristiwa individual.

Hal yang Direkam JFR

JFR menangkap beragam peristiwa, termasuk:

  • Sampel eksekusi (ke mana waktu CPU digunakan).
  • Alokasi objek dan aktivitas TLAB.
  • Jeda pengumpulan sampah.
  • Persaingan kunci (jdk.JavaMonitorWait).
  • Berkas dan IO soket, pemarkiran utas, serta pengecualian.

Setiap peristiwa memiliki cap waktu, durasi, dan jejak tumpukan.

Peristiwa Khusus

Anda dapat menentukan peristiwa JFR sendiri untuk mengukur waktu logika bisnis. Perluas jdk.jfr.Event, beri anotasi, lalu gunakan begin() / commit() di sekitar pekerjaan tersebut.

Bagian antarmuka pemrograman JFR ini dapat digunakan secara mandiri. Rekaman nyata tetap memerlukan opsi JVM, tetapi kelas peristiwa dapat dikompilasi dan dijalankan pada JDK apa pun.

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);
    }
}

Rekaman Berkelanjutan

Untuk layanan yang berjalan lama, jalankan rekaman berkelanjutan dengan batas ukuran atau usia (sebuah penyangga melingkar).

Peristiwa lama dibuang ketika peristiwa baru tiba, sehingga penggunaan disk tetap terbatas. Saat insiden terjadi, Anda dapat menyimpan isi penyangga dan langsung memperoleh menit-menit sebelum insiden tersebut.

Menyimpan Isi Saat Keluar

Tambahkan dumponexit=true ke opsi mulai rekaman dan JFR akan menulis isi penyangga saat JVM dimatikan.

Gabungkan dengan -XX:FlightRecorderOptions untuk mengatur ukuran penyangga. Dengan demikian, Anda dapat memastikan data terekam bahkan dari proses yang akan segera berakhir.

Membaca Berkas

Berkas .jfr bersifat biner. Anda dapat menganalisisnya secara visual di Kontrol Misi JDK (pelajaran berikutnya), atau secara terprogram dengan antarmuka jdk.jfr.consumer dan RecordingFile.

Baris perintah jfr print app.jfr juga dapat menuliskan peristiwa sebagai teks untuk penelusuran cepat.

Mengalirkan Peristiwa Secara Langsung

Sejak JDK 14, JFR mendukung pengaliran peristiwa melalui antarmuka jdk.jfr.consumer.RecordingStream.

Alih-alih menyimpan isi berkas lalu membukanya nanti, Anda berlangganan peristiwa saat terjadi dan merespons secara waktu nyata — misalnya, memberikan peringatan saat jeda pengumpulan sampah melampaui ambang batas. Dengan demikian, JFR menjadi sumber pemantauan langsung, bukan hanya alat analisis setelah kejadian.

Pemeriksaan Singkat

Apa alasan utama JFR dapat dibiarkan berjalan di lingkungan produksi?

Rangkuman

JFR adalah perekam data penerbangan bawaan JVM:

  • Pengumpulan peristiwa dengan beban tambahan rendah dan aman untuk produksi ke dalam berkas .jfr.
  • Mulai melalui -XX:StartFlightRecording atau jcmd JFR.start.
  • Pilih setelan bawaan atau profil; tentukan peristiwa khusus.
  • Gunakan rekaman penyangga melingkar berkelanjutan dan dumponexit.
  • Analisis di Kontrol Misi JDK pada pelajaran berikutnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Java Flight Recorder” gratis?

Ya — teks lengkap “Java Flight Recorder” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Java Flight Recorder”?

Pembuatan profil dengan overhead rendah. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Java Flight Recorder” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengidentifikasi Bottleneck
  2. Java Flight Recorder
  3. Menganalisis dengan JDK Mission Control
  4. Flag Penyetelan JVM Umum
← Kembali ke Java Academy