Bendera Penalaan GC dan Pemprofilan JVisualVM
Tetapkan bendera saiz heap, aktifkan pengelogan GC dan gunakan JVisualVM untuk memprofil penggunaan heap dalam aplikasi yang sedang berjalan.
Bendera Penalaan GC dan Pemprofilan JVisualVM ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Mengapa Menala Kutipan Sampah?
Tetapan kutipan sampah lalai berfungsi dengan baik untuk banyak aplikasi, tetapi beban kerja dengan daya pemprosesan tinggi atau kependaman rendah mungkin memerlukan penalaan. Ukur dahulu — jangan menala secara membuta tuli.
Bendera Saiz Timbunan
Tetapkan timbunan awal (-Xms) dan maksimum (-Xmx). Dalam pengeluaran, tetapkan kedua-duanya sama untuk mengelakkan jeda akibat perubahan saiz dinamik. Mulakan dengan 60-70% daripada RAM yang tersedia.
// Example production flags:
java -Xms2g -Xmx2g -XX:+UseG1GC MyApp
// Avoid:
java -Xmx8g MyApp // initial = 256m, max = 8g → resizing pausesSaiz Generasi Muda
Tingkatkan Generasi Muda untuk aplikasi yang banyak membuat peruntukan bagi mengurangkan kekerapan kutipan sampah kecil. Gunakan -Xmn atau -XX:NewRatio (nisbah Lama:Muda, lalai 2).
// Set Young Gen to 1 GB:
java -Xmx4g -Xmn1g MyApp
// Or via ratio:
java -Xmx4g -XX:NewRatio=3 MyApp // 3GB old, 1GB youngSasaran Jeda G1
Tetapkan -XX:MaxGCPauseMillis untuk memberitahu G1 jeda maksimum yang dikehendaki. G1 menala set koleksinya untuk mencapai sasaran itu — tetapi sasaran tersebut bukan jaminan mutlak.
java -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx8g MyApp
// G1 will try to keep pauses under 100 msBilangan Benang Kutipan Sampah
Kawal keselarian dengan -XX:ParallelGCThreads (benang henti-semua) dan -XX:ConcGCThreads (benang serentak untuk G1/ZGC).
// On an 8-core machine:
java -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 MyAppMendayakan Pengelogan Kutipan Sampah (JVM 9+)
Gunakan rangka kerja Xlog untuk merekodkan peristiwa kutipan sampah. Analisis log di luar talian untuk mengesan jeda panjang, lonjakan peruntukan dan kegagalan promosi.
java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=20m MyAppAmaran Objek Gergasi
Objek yang lebih besar daripada 50% rantau G1 ialah objek "gergasi" dan melangkau Generasi Muda, lalu terus masuk ke Generasi Lama. Hal ini boleh menyebabkan pemecahan. Pastikan objek besar kekal kecil atau tingkatkan saiz rantau.
// Increase G1 region size (range: 1 MB to 32 MB, must be power of 2):
java -XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx16g MyAppGambaran Keseluruhan JVisualVM
JVisualVM (disertakan bersama JDK 8 dan boleh dimuat turun untuk JDK yang lebih baharu) menyediakan GUI untuk memantau timbunan, kutipan sampah, CPU dan benang bagi proses JVM tempatan serta jauh.
Menyambung kepada JVM Jauh
Dayakan JMX pada pelayan untuk menyambung kepada JVisualVM dari jauh. Tambahkan bendera ini pada permulaan JVM sasaran.
// Remote JVM flags:
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
MyAppPetikan Timbunan daripada JVisualVM
Dalam JVisualVM, klik kanan proses → "Petikan Timbunan". Petikan itu menunjukkan objek aktif, saiz terkekal dan rujukan. Gunakan "Konsol OQL" untuk menyoal petikan dengan sintaks seperti SQL.
Pemprofilan CPU dengan JVisualVM
Tukar ke tab Pemprofil, kemudian klik "CPU". JVisualVM memasang instrumentasi pada kaedah dan menunjukkan tindanan panggilan paling aktif. Hentikan pemprofil untuk melihat kaedah yang menggunakan masa paling banyak.
Java Flight Recorder berbanding JVisualVM
JFR mempunyai beban tambahan yang lebih rendah (~1-2%) dan sesuai untuk pengeluaran. JVisualVM dengan pemprofilan mempunyai beban tambahan yang lebih tinggi dan lebih sesuai untuk pembangunan. Gunakan JFR dalam pengeluaran dan JVisualVM untuk penyahpepijatan semasa pembangunan.
Semakan Pantas
Bendera apakah yang menetapkan sasaran jeda maksimum kutipan sampah untuk G1?
Imbas Kembali
Tetapkan -Xms == -Xmx dalam pengeluaran. Tala -XX:MaxGCPauseMillis untuk G1. Dayakan pengelogan kutipan sampah dengan Xlog. Gunakan JVisualVM untuk penyahpepijatan semasa pembangunan dan JFR untuk pemprofilan dalam pengeluaran.
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Bendera Penalaan GC dan Pemprofilan JVisualVM” percuma?
Ya — teks penuh “Bendera Penalaan GC dan Pemprofilan JVisualVM” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Bendera Penalaan GC dan Pemprofilan JVisualVM”?
Tetapkan bendera saiz heap, aktifkan pengelogan GC dan gunakan JVisualVM untuk memprofil penggunaan heap dalam aplikasi yang sedang berjalan. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Bendera Penalaan GC dan Pemprofilan JVisualVM” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Rantau Heap JVM dan Kitar Hayat Objek
- Algoritma GC: Serial, G1, ZGC, Shenandoah
- Mengesan dan Membetulkan Kebocoran Memori
- Bendera Penalaan GC dan Pemprofilan JVisualVM