Відповіді:
Прапор Xmx
вказує максимальний пул розподілу пам'яті для віртуальної машини Java (JVM), в той час як Xms
вказує початковий пул розподілу пам'яті.
Це означає, що ваш JVM буде запущений з Xms
кількістю пам'яті і зможе використовувати максимумXmx
обсягу пам'яті. Наприклад, запуск JVM, як показано нижче, запустить його з 256 МБ пам'яті і дозволить процесу використовувати до 2048 МБ пам'яті:
java -Xms256m -Xmx2048m
Прапор пам'яті також можна вказати в різних розмірах, таких як кілобайти, мегабайти тощо.
-Xmx1024k
-Xmx512m
-Xmx8g
The Xms
Прапор не має значення по замовчуванню, і Xmx
зазвичай має значення за замовчуванням 256 МБ. Загальне використання цих прапорів - це коли ви стикаєтесь з a java.lang.OutOfMemoryError
.
Використовуючи ці налаштування, майте на увазі, що ці налаштування призначені для купи JVM і що JVM може / буде використовувати більше пам'яті, ніж просто розмір, призначений для купи. З документації Oracle :
Зауважте, що JVM використовує більше пам'яті, ніж просто купа. Наприклад, методи Java, стеки потоків і нативні ручки виділяються в пам'яті, окремо від купи, а також внутрішніх структур даних JVM.
OutOfMemoryError
відбудеться повідомлення.
-Xms256m
"256 Мбіт", а не "256 МБ", оскільки це стосується бінарних повноважень, а не потужностей десяти. Див. En.wikipedia.org/wiki/Binary_prefix . Крім того, оскільки для додаткового пулу Survivor простору відведено деякий непридатний простір, об'єм пам'яті, фактично наявний відповідно до Runtime.getRuntime().maxMemory()
, менший за значення, вказане через -Xmx
Запустіть команду, java -X
і ви отримаєте список усіх -X
варіантів:
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 є нестандартними і можуть змінюватися без попереднього повідомлення.
Сподіваюся, це допоможе вам зрозуміти Xms
, Xmx
як і багато інших речей, які мають найбільше значення. :)
Ви можете вказати його у своїй IDE. Наприклад, для Eclipse у конфігураціях запуску → аргументи VM . Ви можете ввести -Xmx800m -Xms500m
як
Саме питання вже було розглянуто вище. Просто додавання частини значень за замовчуванням.
Відповідно до http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Значення Xmx за замовчуванням залежатиме від платформи та кількості пам'яті, наявної в системі.
-Xmx128m -Xms64m
він може досягти максимальної кількості275m
пам’яті з ВДЕ, але при використанні-Xmx128m -Xms128m
може550m
досягти максимуму навколо пам’яті з ВДЕ Використання Java 8 Найкраще - наголосити на ГК і подивитися, що відбувається ...