0Pricing
Java Academy · Pelajaran

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 pauses

Ukuran 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 young

Target 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 ms

Jumlah 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 MyApp

Mengaktifkan 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 MyApp

Peringatan 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 MyApp

Ikhtisar 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 \
     MyApp

Dump 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

  1. Region Heap JVM dan Siklus Hidup Objek
  2. Algoritma GC: Serial, G1, ZGC, Shenandoah
  3. Mendeteksi dan Memperbaiki Kebocoran Memori
  4. Flag Penyetelan GC dan Pembuatan Profil dengan JVisualVM
← Kembali ke Java Academy