Prestasi Java profil dengan JFR dan VisualVM
Jul 29, 2025 am 01:32 AMJFR dan VisualVM adalah kombinasi yang cekap dari analisis prestasi Java. JFR bertanggungjawab untuk overhead rendah untuk mengumpul data berjalan JVM, dan VisualVM digunakan untuk analisis visual. 1. Dayakan JFR untuk membolehkan secara dinamik dengan menambah parameter -xx: flightrecorder pada permulaan atau menggunakan perintah JCMD semasa operasi. Adalah disyorkan untuk menggunakan templat profil untuk mendapatkan peristiwa yang lebih terperinci. 2. Gunakan arahan JCMD untuk menetapkan parameter seperti tempoh dan nama fail untuk rakaman masa, atau anda boleh mengawal peristiwa pengambilalihan dengan tepat melalui fail .jfc adat. 3. VisualVM perlu memasang versi peningkatan komuniti dan tambahkan pemalam JFR. Selepas memuatkan fail .jfr, anda boleh menganalisis CPU, memori, GC, thread dan isu -isu lain melalui gambaran keseluruhan, telemetri, koleksi sampah, memori, benang, kod dan panel lain. 4. Apabila meletakkan kemunculan prestasi, kaedah panas digunakan untuk menemui hotspot CPU, peruntukan paparan panel memori, panel benang mengiktiraf persaingan kunci, dan carta GC menentukan kekerapan dan jeda kitar semula. 5. Dalam penggunaan sebenar, templat lalai harus dielakkan, masa rakaman harus ditetapkan dengan munasabah, dan prosesnya harus diamalkan secara teratur untuk menangani masalah dalam talian. Walaupun gabungan ini bukan yang terkini, ia masih ringan dan berkesan, sesuai untuk kebanyakan pemaju Java untuk mendiagnosis masalah prestasi dengan cepat.
Analisis prestasi Java adalah langkah utama dalam mengoptimumkan aplikasi dan kesesakan penyelesaian masalah. Dalam pembangunan dan operasi dan penyelenggaraan sebenar, JFR (Java Flight Recorder) dan VisualVM adalah dua alat yang sangat praktikal. Mereka boleh menggunakannya dalam kombinasi untuk mendapatkan gambaran tentang status JVM dan tingkah laku aplikasi. Berikut adalah penerangan terperinci tentang cara menggunakannya untuk analisis prestasi.

Apa itu JFR dan Visualvm?
JFR (Java Flight Recorder) adalah pemantauan prestasi rendah dan alat rakaman acara terbina dalam di JDK. Ia boleh terus mengumpul data JVM dalaman, seperti GC, benang, persaingan kunci, pensampelan kaedah, dan lain -lain, dan sesuai digunakan dalam persekitaran pengeluaran.
VisualVM adalah alat pemantauan dan analisis grafik yang menyokong memori JVM, CPU, benang, dan pemuatan kelas, dan boleh memuatkan fail rakaman JFR untuk analisis visual.

Kedua -duanya digunakan bersama: JFR bertanggungjawab mengumpul data, dan VisualVM bertanggungjawab untuk memaparkan dan menganalisis.
Cara Mengaktifkan dan Menggunakan JFR untuk Pembalakan Prestasi
JFR boleh didapati bermula dari JDK 8U40 dan diintegrasikan secara lalai dalam JDK 11 dan percuma (versi awal Oracle JDK memerlukan kebenaran komersial).

Cara Memulakan Rekod JFR:
Anda boleh mengaktifkannya secara dinamik melalui baris arahan atau JMX:
# Kaedah 1: Hidupkan JFR pada permulaan java -xx: flightrecorder -xx: startflightreCording = duration = 60s, filename = app.jfr myApplication # Kaedah 2: Secara dinamik dihidupkan semasa operasi (dengan andaian anda mengetahui proses PID) jcmd <pid> jfr.start duration = 30s filename = recording.jfr
Parameter biasa Penerangan:
-
duration
: Tempoh rakaman (seperti 60 -an) -
filename
: Laluan fail output -
maxage
/maxsize
: Tetapan Rekod Loop -
settings
: Templat Konfigurasi Acara Custom (seperti mod "profil" untuk lebih terperinci)
Sebagai contoh, aktifkan rekod profil berprestasi tinggi:
JCMD <PID> JFR.Start Settings = Profil Duration = 120S FileName = Perf.JFR
Templat profile
ini membolehkan lebih banyak peristiwa persampelan, sesuai untuk analisis prestasi mendalam.
Menganalisis rekod JFR menggunakan visualvm
Walaupun VisualVM tidak lagi dikekalkan secara aktif (diarkibkan), ia masih digunakan secara meluas dalam analisis debug tempatan. Menyokong JFR adalah kuasa.
Pasang dan konfigurasikan VisualVM (versi yang dipertingkatkan pihak ketiga disyorkan)
VisualVM asal rasmi mempunyai sokongan terhad untuk JFR. Adalah disyorkan untuk menggunakan VisualVM dengan plugin JFR , versi "VisualVM 2.0" yang dikendalikan oleh masyarakat.
Muat turun Alamat: http://ipnx.cn/link/81a25c4e9b7f4f8fa356e4863b32735e
Langkah pemasangan ringkas:
- Muat turun dan unzip visualvm
- Selepas Permulaan, Masukkan Alat → Plugin → Plugin Tersedia
- Pasang plugin "Java Flight Recorder"
- Mulakan semula berkuat kuasa
Memuat dan Menganalisis Fail JFR
- Buka Visualvm
- Pilih Fail → LOAD → Pilih
.jfr
Fail di bar menu - Lihat panel utama berikut:
1. Gambaran Keseluruhan
- Paparkan masa rakaman, maklumat JVM, persekitaran tuan rumah dan metadata lain
2. Telemetri
- Paparan masa nyata memori timbunan, memori bukan sekeping, masa GC, kiraan thread, dan carta trend penggunaan CPU
- Cepat menentukan sama ada terdapat kebocoran memori atau masalah CPU yang melambung tinggi
3. Koleksi Sampah
- Memaparkan masa, jenis (GC Young / penuh GC), saiz timbunan depan dan belakang setiap GC
- Jeda GC yang kerap atau berpanjangan dapat dijumpai (STW)
4 ingatan
- Hotspot peruntukan objek timbunan (objek yang diperuntukkan mengikut jenis)
- Boleh mencari sejumlah besar objek kecil yang dibuat (seperti rentetan, hashmap)
5. Threads
- Perubahan keadaan benang, alasan untuk menyekat
- Acara Persaingan Kunci (Monitor Wait, Block) jelas kelihatan
- Blok segerak yang dapat mengenal pasti kebuntuan atau latensi tinggi
6. Kod (kaedah panas)
- Kaedah pensampelan stack panggilan (berdasarkan pensampelan masa)
- Ketahui titik panas yang mengambil CPU paling banyak
- Menyokong rantai panggilan yang meluaskan dengan benang, yang memudahkan kedudukan dan operasi yang perlahan
?? Nota: JFR tidak membolehkan semua peristiwa secara lalai. Jika anda tidak melihat butiran yang mencukupi, anda harus menggunakan konfigurasi
profile
atau fail.jfc
adat untuk meningkatkan ketepatan persampelan.
Kemahiran Praktikal: Cepat mencari masalah prestasi biasa
Jenis Soalan | JFR Visualvm Point |
---|---|
Penggunaan CPU yang berlebihan | Semak "kaedah panas" untuk melihat kaedah mana yang mengambil sampel yang paling; periksa sama ada gelung tak terhingga atau letupan perlawanan biasa |
Pertumbuhan memori terlalu pantas | Semak "Memory → Peruntukan" untuk mencari sejumlah besar kelas instantiated; Gunakan kekerapan GC untuk menentukan sama ada ia bocor |
Permintaan respons melambatkan | Semak acara menunggu thread (monitor disekat), adakah persaingan kunci? Kolam sambungan pangkalan data habis? |
GC dengan kerap | Semak carta "Koleksi Sampah" untuk mengesahkan kekerapan dan tempoh GC; Laraskan saiz timbunan atau pilih algoritma GC yang sesuai |
Contohnya:
Anda melihat java.util.HashMap.get()
muncul di bahagian atas dalam "kaedah panas" dan berasal dari kelas cache. Ini mungkin bermaksud:
- Kadar hit cache rendah, pengiraan hash yang kerap
- Atau akses serentak adalah serius, menyebabkan pokok merah dan hitam merosot, lihat selanjutnya tumpukan thread, sahkan konteks panggilan, dan kemudian memutuskan sama ada untuk menggantikannya dengan
ConcurrentHashMap
atau mengoptimumkan reka bentuk utama.
Petua dan langkah berjaga -jaga
- Overhead yang rendah tidak bermakna sifar overhead : overhead lalai JFR adalah <2%, tetapi masih disyorkan untuk mengawal kekerapan pensampelan dalam senario throughput tinggi yang melampau.
- Menetapkan masa rakaman yang munasabah : Jika terlalu pendek, anda tidak akan menangkap masalah. Jika terlalu lama, ia akan menjejaskan prestasi dan mempunyai fail besar.
- Gunakan fail Tetapan untuk menyesuaikan acara :
jcmd <pid> jfr.check # Lihat templat tersedia jcmd <pid> jfr.start settings = myconfig.jfc ...
Anda boleh mengedit fail
.jfc
sendiri dan hanya membolehkan acara yang anda sayangi (seperti hanya memberi tumpuan kepada benang dan GC). - Jangan bergantung pada templat lalai untuk diagnosis mendalam : Templat lalai mempunyai peristiwa yang lebih sedikit, jadi disyorkan untuk menggunakan
profile
atau konfigurasi tersuai.
Pada dasarnya itu sahaja. JFR menyediakan keupayaan pengambilalihan data asas yang kuat, dan VisualVM menjadikan data sejuk ini intuitif dan mudah difahami. Walaupun terdapat lebih banyak alat moden (seperti Async-Profiler, JMC, Prometheus Grafana), untuk kebanyakan pemaju Java, gabungan ini masih mencukupi, ringan, dan tidak memerlukan entri kod.
Apa yang tidak rumit tetapi mudah diabaikan ialah: mengamalkan rakaman lengkap → proses analisis terlebih dahulu , dan hanya boleh bertindak balas dengan cepat apabila terdapat masalah dalam talian.
Atas ialah kandungan terperinci Prestasi Java profil dengan JFR dan VisualVM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Prestasi Java berkait rapat dengan seni bina perkakasan, dan memahami hubungan ini dapat meningkatkan keupayaan pengaturcaraan dengan ketara. 1) JVM menukarkan bytecode Java ke dalam arahan mesin melalui kompilasi JIT, yang dipengaruhi oleh seni bina CPU. 2) Pengurusan memori dan koleksi sampah dipengaruhi oleh RAM dan kelajuan bas memori. 3) Ramalan cache dan cawangan mengoptimumkan pelaksanaan kod Java. 4) Pemprosesan pelbagai threading dan selari meningkatkan prestasi pada sistem multi-teras.

Pembangunan Java adalah salah satu bahasa pengaturcaraan yang paling popular pada masa ini Kekuatannya terletak pada struktur data dan perpustakaan algoritmanya. Walau bagaimanapun, bagi pembangun yang baru bermula atau ingin memperbaiki diri mereka sendiri, cara mengendalikan struktur data dan algoritma dengan cekap masih menjadi cabaran. Artikel ini akan berkongsi dengan anda pengalaman dan cadangan saya dalam pembangunan Java, saya harap ia akan membantu semua orang. Pertama, adalah sangat penting untuk memahami struktur dan algoritma data biasa. Java telah terbina dalam banyak struktur dan algoritma data yang biasa digunakan, seperti tatasusunan, senarai terpaut, tindanan dan baris gilir.

Kod Java akan mempunyai perbezaan prestasi apabila berjalan pada platform yang berbeza. 1) Strategi pelaksanaan dan pengoptimuman JVM adalah berbeza, seperti OracleJDK dan OpenJDK. 2) Ciri -ciri sistem operasi, seperti pengurusan memori dan penjadualan thread, juga akan menjejaskan prestasi. 3) Prestasi boleh ditingkatkan dengan memilih JVM yang sesuai, menyesuaikan parameter JVM dan pengoptimuman kod.

Cara Membetulkan: Ralat Prestasi Java: Penggunaan CPU Tinggi Semasa membangunkan aplikasi Java, anda sering menghadapi masalah penggunaan CPU yang tinggi. Ini boleh menyebabkan kemerosotan prestasi aplikasi dan menggunakan sumber pengkomputeran yang ketara. Artikel ini akan menyediakan beberapa kaedah untuk menyelesaikan masalah penggunaan CPU yang berlebihan bagi aplikasi Java, dan melampirkan contoh kod. Semak gelung dan rekursi dalam kod anda Di Java, gelung dan rekursi adalah salah satu punca biasa penggunaan CPU yang tinggi. Sila pastikan tiada gelung dan pengulangan yang tidak perlu dalam kod anda, dan cuba lakukan

JVM'sperformanceiscompetitiveWithotherRuntimes, menawarkanbalanceofspeed, keselamatan, dan produktiviti.1) jvmusesjitcompilationfordynamiciptimizations.2) c menawarkanSnativePerformanceButLacksjvm'sSafetyFeatures.3) pythonissloweSiSiSiSiSiSiS.3) pythonissloweSiSiSiSiSiS.3) pythonissloweSiSiSiSiSiS.3)

JITcompilationinJavaenhancesperformancewhilemaintainingplatformindependence.1)Itdynamicallytranslatesbytecodeintonativemachinecodeatruntime,optimizingfrequentlyusedcode.2)TheJVMremainsplatform-independent,allowingthesameJavaapplicationtorunondifferen

Ringkasan amalan pengoptimuman prestasi dan penalaan asas JAVA: Dengan perkembangan pesat Internet, JAVA, sebagai bahasa pengaturcaraan berprestasi tinggi dan kebolehpercayaan tinggi, digunakan secara meluas dalam pelbagai bidang. Walau bagaimanapun, disebabkan kewujudan Mesin Maya JAVA (JVM), ramai pembangun mungkin tidak memahami pelaksanaan asas dan teknik penalaan prestasi JAVA. Artikel ini akan memperkenalkan beberapa amalan pengoptimuman prestasi dan penalaan asas JAVA untuk membantu pembangun lebih memahami dan memanfaatkan kelebihan prestasi JAVA. 1. Fahami mesin maya JAVA dan pelajari sifat asas JAVA

Penalaan GC mengoptimumkan prestasi rangka kerja Java dengan melaraskan parameter JVMGC, termasuk saiz generasi baharu, ambang kutipan sampah dan mod GC serentak. Dalam kes sebenar, penalaan GC untuk rangka kerja SpringBoot mengurangkan purata masa tindak balas sebanyak 100ms, 400ms dan 1000ms masing-masing, membuktikan kesan ketara penalaan GC pada prestasi rangka kerja Java.
