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 classpath -Xbootclasspath/p:<directories and zip/jar files separated by ;> prepend in front of bootstrap classpath -Xdiag show additional diagnostic messages -Xnoclassgc disable classgarbage 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 classdata -Xshare:auto use shared classdataifpossible(default) -Xshare:on require using shared classdata, 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 как