Tolong jelaskan penggunaan Xms
dan Xmx
parameter di JVMs. Apa nilai-nilai default untuk mereka?
Bendera Xmx
menentukan alokasi memori maksimum renang untuk Java virtual machine (JVM), sementara Xms
menentukan awal alokasi memori kolam renang.
Ini berarti bahwa anda JVM akan dimulai dengan Xms
jumlah memori dan akan dapat menggunakan maksimal Xmx
jumlah memori. Misalnya, mulai JVM seperti di bawah ini akan mulai dengan 256 MB memori dan akan memungkinkan proses untuk menggunakan hingga 2048 MB memori:
java -Xms256m -Xmx2048m
Memori bendera juga dapat ditentukan dalam berbagai ukuran, seperti kilobyte, megabyte, dan sebagainya.
-Xmx1024k
-Xmx512m
-Xmx8g
The Xms
bendera tidak memiliki nilai default, dan Xmx
biasanya memiliki nilai default dari 256 MB. Yang umum digunakan untuk bendera ini adalah ketika anda menghadapi jawa.lang.OutOfMemoryError
.
Bila menggunakan pengaturan ini, perlu diingat bahwa pengaturan ini adalah untuk JVM's heap, dan bahwa JVM dapat/akan menggunakan memori lebih dari sekedar ukuran dialokasikan ke tumpukan. Dari Oracle's dokumentasi:
Perhatikan bahwa JVM menggunakan memori lebih dari sekedar tumpukan. Misalnya metode Java, tumpukan benang dan asli pegangan yang dialokasikan di memori terpisah dari tumpukan, serta JVM struktur data internal.
Jalankan perintah jawa -X
dan anda akan mendapatkan daftar semua -X
pilihan:
C:\Users\Admin>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xdiag show additional diagnostic messages
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<File> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size.........................
-Xmx<size> set maximum Java heap size.........................
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
-XshowSettings show all settings and continue
-XshowSettings:all show all settings and continue
-XshowSettings:vm show all vm related settings and continue
-XshowSettings:properties show all property settings and continue
-XshowSettings:locale show all locale related settings and continue
- X pilihan non-standar dan dapat berubah tanpa pemberitahuan.
Saya berharap ini akan membantu anda memahami Xms
, Xmx
serta banyak hal-hal lain yang paling penting. :)
Anda dapat menentukan IDE anda. Misalnya, untuk Gerhana di Menjalankan Konfigurasi → VM argumen. Anda dapat memasukkan -Xmx800m -Xms500m
sebagai
Pertanyaan itu sendiri sudah dibahas di atas. Hanya menambahkan bagian dari nilai-nilai default.
Sebagai per http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Nilai default dari Xmx akan tergantung pada platform dan jumlah memori yang tersedia dalam sistem.
JVM memori yang terdiri dari segmen berikut:
JVM memiliki tumpukan yang lebih runtime data dari memori untuk semua kelas contoh dan array yang dialokasikan. Hal ini dibuat pada JVM start-up.
Ukuran tumpukan dapat dikonfigurasi dengan berikut VM pilihan:
-Xmx<size> - to set the maximum Java heap size
-Xms<size> - to set the initial Java heap size
Secara default, maksimum ukuran tumpukan adalah 64 MB.
Tumpukan memori untuk objek yang direklamasi oleh manajemen memori otomatis sistem yang dikenal sebagai pengumpul sampah. Tumpukan dapat menjadi ukuran yang tetap atau dapat melebar dan mengecil, tergantung pada garbage collector's strategi.
Berikut perintah mulai JVM dengan memori 256MB, dan memungkinkan Jawa proses untuk menggunakan hingga 4G (4096MB) dari memori.
java -Xms256m -Xmx4g