Tolong jelaskan penggunaan Xms
dan Xmx
parameter dalam JVM. Apa nilai default untuk mereka?
java
memory-management
parameters
jvm
Pankaj
sumber
sumber
-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 ...Jawaban:
Bendera
Xmx
menentukan kumpulan alokasi memori maksimum untuk mesin virtual Java (JVM), sementaraXms
menentukan kumpulan alokasi memori awal.Ini berarti bahwa JVM Anda akan dimulai dengan
Xms
jumlah memori dan akan dapat menggunakanXmx
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:Bendera memori juga dapat ditentukan dalam berbagai ukuran, seperti kilobyte, megabita, dan sebagainya.
The
Xms
flag tidak memiliki nilai default, danXmx
biasanya memiliki nilai default dari 256 MB. Penggunaan umum untuk bendera ini adalah ketika Anda menemukan ajava.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 :
sumber
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 menurutRuntime.getRuntime().maxMemory()
kurang dari nilai yang ditentukan melaluiJalankan perintah
java -X
dan Anda akan mendapatkan daftar semua-X
opsi: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. :)sumber
Anda dapat menentukannya di IDE Anda. Misalnya, untuk Eclipse dalam Konfigurasi Konfigurasi → argumen VM . Anda dapat memasukkan
-Xmx800m -Xms500m
sebagaisumber
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.
sumber
Ukuran heap awal -Xms untuk startup, namun, selama proses kerja ukuran heap bisa kurang dari -Xms karena ketidakaktifan pengguna atau iterasi GC. Ini bukan ukuran tumpukan minimal yang diperlukan.
-Xmx ukuran tumpukan maksimal
sumber