Jawaban:
Bendera Xmx
menentukan kumpulan alokasi memori maksimum untuk mesin virtual Java (JVM), sementara Xms
menentukan kumpulan alokasi memori awal.
Ini berarti bahwa JVM Anda akan dimulai dengan Xms
jumlah memori dan akan dapat menggunakan Xmx
jumlah memori maksimum . Misalnya, memulai JVM seperti di bawah ini akan memulainya dengan 256 MB memori dan akan memungkinkan proses untuk menggunakan hingga 2048 MB memori:
java -Xms256m -Xmx2048m
Bendera memori juga dapat ditentukan dalam berbagai ukuran, seperti kilobyte, megabita, dan sebagainya.
-Xmx1024k
-Xmx512m
-Xmx8g
The Xms
flag tidak memiliki nilai default, dan Xmx
biasanya memiliki nilai default dari 256 MB. Penggunaan umum untuk bendera ini adalah ketika Anda menemukan a java.lang.OutOfMemoryError
.
Saat menggunakan pengaturan ini, perlu diingat bahwa pengaturan ini adalah untuk tumpukan JVM , dan bahwa JVM dapat / akan menggunakan lebih banyak memori daripada hanya ukuran yang dialokasikan untuk tumpukan. Dari dokumentasi Oracle :
Perhatikan bahwa JVM menggunakan lebih banyak memori daripada hanya tumpukan. Misalnya metode Java, tumpukan ulir dan pegangan asli dialokasikan dalam memori yang terpisah dari heap, serta struktur data internal JVM.
OutOfMemoryError
akan muncul.
-Xms256m
"256 MiB", bukan "256 MB", karena ia menggunakan kekuatan biner daripada kekuatan sepuluh. Lihat en.wikipedia.org/wiki/Binary_prefix . Selain itu, karena beberapa ruang yang tidak dapat digunakan disisihkan untuk kumpulan tambahan ruang Survivor, jumlah memori yang sebenarnya tersedia menurut Runtime.getRuntime().maxMemory()
kurang dari nilai yang ditentukan melalui
Jalankan perintah java -X
dan Anda akan mendapatkan daftar semua -X
opsi:
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
Opsi -X adalah non-standar dan dapat berubah tanpa pemberitahuan.
Saya harap ini akan membantu Anda memahami Xms
, Xmx
serta banyak hal lain yang paling penting. :)
Anda dapat menentukannya di IDE Anda. Misalnya, untuk Eclipse dalam Konfigurasi Konfigurasi → argumen VM . Anda dapat memasukkan -Xmx800m -Xms500m
sebagai
Pertanyaannya sendiri sudah dibahas di atas. Hanya menambahkan sebagian dari nilai default.
Sesuai http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Nilai default Xmx akan tergantung pada platform dan jumlah memori yang tersedia di sistem.
-Xmx128m -Xms64m
dapat memuncak di sekitar275m
RES mem, tetapi saat menggunakannya-Xmx128m -Xms128m
dapat memuncak di sekitar550m
RES mem Menggunakan Java 8 Hal terbaik adalah menekankan GC dan melihat apa yang terjadi ...