Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM
Atur flag ukuran heap, aktifkan pencatatan GC, dan gunakan JVisualVM untuk membuat profil penggunaan heap dalam aplikasi yang sedang berjalan.
Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Mengapa Menyetel GC?
Pengaturan GC bawaan bekerja dengan baik untuk banyak aplikasi, tetapi beban kerja dengan throughput tinggi atau latensi rendah mungkin memerlukan penyetelan. Ukur terlebih dahulu — jangan pernah menyetel secara membabi buta.
Flag Ukuran Heap
Tetapkan heap awal (-Xms) dan maksimum (-Xmx). Dalam produksi, samakan keduanya untuk mencegah jeda akibat perubahan ukuran dinamis. Mulailah dengan 60-70% RAM yang tersedia.
// Example production flags:
java -Xms2g -Xmx2g -XX:+UseG1GC MyApp
// Avoid:
java -Xmx8g MyApp // initial = 256m, max = 8g → resizing pausesUkuran Generasi Muda
Tingkatkan Generasi Muda untuk aplikasi yang banyak melakukan alokasi agar frekuensi GC Minor berkurang. Gunakan -Xmn atau -XX:NewRatio (rasio Tua:Muda, bawaan 2).
// Set Young Gen to 1 GB:
java -Xmx4g -Xmn1g MyApp
// Or via ratio:
java -Xmx4g -XX:NewRatio=3 MyApp // 3GB old, 1GB youngTarget Jeda G1
Tetapkan -XX:MaxGCPauseMillis untuk memberi tahu G1 batas maksimum jeda yang diinginkan. G1 menyetel kumpulan koleksinya untuk mencapai target tersebut — tetapi target ini bukan jaminan mutlak.
java -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx8g MyApp
// G1 will try to keep pauses under 100 msJumlah Utas GC
Atur paralelisme dengan -XX:ParallelGCThreads (utas yang menghentikan semua aplikasi) dan -XX:ConcGCThreads (utas serentak untuk G1/ZGC).
// On an 8-core machine:
java -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 MyAppMengaktifkan Pencatatan GC (JVM 9+)
Gunakan kerangka Xlog untuk merekam peristiwa GC. Analisis catatan secara luring untuk menemukan jeda panjang, lonjakan alokasi, dan kegagalan promosi.
java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=20m MyAppPeringatan Objek Sangat Besar
Objek yang lebih besar dari 50% wilayah G1 disebut "sangat besar" dan melewati Generasi Muda, lalu langsung masuk ke Generasi Tua. Hal ini dapat menyebabkan fragmentasi. Jaga agar objek besar tetap kecil atau tingkatkan ukuran wilayah.
// Increase G1 region size (range: 1 MB to 32 MB, must be power of 2):
java -XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx16g MyAppIkhtisar VisualVM
VisualVM (disertakan bersama JDK 8 dan dapat diunduh untuk JDK yang lebih baru) menyediakan GUI untuk memantau heap, GC, CPU, dan utas dari proses JVM lokal maupun jarak jauh.
Menghubungkan ke JVM Jarak Jauh
Aktifkan JMX di server untuk terhubung ke VisualVM dari jarak jauh. Tambahkan flag berikut ke saat memulai JVM target.
// 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 \
MyAppDump Heap dari VisualVM
Di VisualVM, klik kanan proses → "Dump Heap". Dump tersebut menampilkan objek aktif, ukuran yang dipertahankan, dan referensi. Gunakan "Konsol OQL" untuk meminta data dari dump dengan sintaks mirip SQL.
Membuat Profil CPU dengan VisualVM
Beralih ke tab Profiler, lalu klik "CPU". VisualVM menginstrumentasikan metode dan menampilkan tumpukan panggilan yang paling sibuk. Hentikan profiler untuk melihat metode mana yang paling banyak menghabiskan waktu.
Java Flight Recorder dibandingkan dengan VisualVM
JFR memiliki beban tambahan lebih rendah (sekitar 1-2%) dan cocok untuk produksi. VisualVM dengan pembuatan profil memiliki beban tambahan lebih tinggi dan lebih baik untuk pengembangan. Gunakan JFR di produksi dan VisualVM untuk penelusuran masalah saat pengembangan.
Pemeriksaan Singkat
Flag apa yang menetapkan target maksimum jeda GC untuk G1?
Ringkasan
Tetapkan -Xms == -Xmx di produksi. Setel -XX:MaxGCPauseMillis untuk G1. Aktifkan pencatatan GC dengan Xlog. Gunakan VisualVM untuk penelusuran masalah saat pengembangan dan JFR untuk pembuatan profil di produksi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM” gratis?
Ya — teks lengkap “Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM” 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 “Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM”?
Atur flag ukuran heap, aktifkan pencatatan GC, dan gunakan JVisualVM untuk membuat profil penggunaan heap dalam aplikasi yang sedang berjalan. 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 4 dari 4.
Berapa lama pelajaran “Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM” 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
- Region Heap JVM dan Siklus Hidup Objek
- Algoritma GC: Serial, G1, ZGC, Shenandoah
- Mendeteksi dan Memperbaiki Kebocoran Memori
- Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM