Вопрос-ответ

What are the -Xms and -Xmx parameters when starting JVM?

Каковы параметры -Xms и -Xmx при запуске JVM?

Пожалуйста, объясните использование параметров Xms и Xmx в JVM. Каковы их значения по умолчанию?

Переведено автоматически
Ответ 1

Флаг Xmx указывает максимальный пул выделения памяти для виртуальной машины Java (JVM), в то время как Xms указывает начальный пул выделения памяти.

Это означает, что ваша JVM будет запущена с Xms объемом памяти и сможет использовать максимальный Xmx объем памяти. Например, запуск JVM, подобный приведенному ниже, запустит его с 256 МБ памяти и позволит процессу использовать до 2048 МБ памяти:

java -Xms256m -Xmx2048m

Флаг памяти также может быть указан в различных размерах, таких как килобайты, мегабайты и так далее.

-Xmx1024k
-Xmx512m
-Xmx8g

Флаг Xms не имеет значения по умолчанию, и Xmx обычно имеет значение по умолчанию 256 МБ. Обычно эти флаги используются, когда вы сталкиваетесь с java.lang.OutOfMemoryError.

При использовании этих настроек имейте в виду, что эти настройки предназначены для кучи JVM, и что JVM может и будет использовать больше памяти, чем просто размер, выделенный для кучи. Из документации Oracle:


Обратите внимание, что JVM использует больше памяти, чем просто кучу. Например, методы Java, стеки потоков и собственные дескрипторы размещаются в памяти отдельно от кучи, так же как и внутренние структуры данных JVM.


Ответ 2

Запустите команду 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 а также многие другие вещи, которые важны больше всего. :)

Ответ 3

-Xms - начальный размер кучи для запуска, однако в процессе работы размер кучи может быть меньше, чем -Xms из-за неактивности пользователей или итераций GC. Это не минимальный требуемый размер кучи.

-Xmx - максимальный размер кучи

Ответ 4

Вы можете указать это в своей IDE. Например, для Eclipse в Конфигурации запускаАргументы виртуальной машины. Вы можете ввести -Xmx800m -Xms500m как

Введите описание изображения здесь

java jvm