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

741

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

  • 2
    при использовании -Xmx128m -Xms64m он может -Xmx128m -Xms64m пика около 275m RES-памяти, но при использовании -Xmx128m -Xms128m он может -Xmx128m -Xms128m около 550m RES-памяти Использование Java 8 Лучше всего подчеркнуть ГХ и посмотреть, что происходит ...
Теги:
memory-management
jvm
parameters

4 ответа

1064
Лучший ответ

Флаг 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.

  • 9
    То есть, когда использование памяти превышает Xmx, мы получаем исключение jvm из памяти.
  • 44
    Да, это правильно. Когда он пытается превысить это, хотя он может собирать мусор, пытаясь освободить достаточно памяти. Если памяти по-прежнему недостаточно для удовлетворения запроса, и куча уже достигла максимального размера, произойдет OutOfMemoryError .
Показать ещё 7 комментариев
252

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

20

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

Изображение 1385

  • 0
    В RubyMine на OSX он находится в меню «Справка»> «Изменить пользовательские параметры виртуальной машины».
  • 2
    Это не отвечает на вопрос. Вопрос в том, для чего они, а не в том, как их установить.
11

Основная часть вопроса уже была рассмотрена выше. Просто добавьте часть значений по умолчанию.

По http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Значение по умолчанию Xmx будет зависеть от платформы и объема памяти, доступной в системе.

  • 6
    Для других JVM (кроме JRockit) см. Этот пост, чтобы определить значения Xmx / Xms по умолчанию для вашей JVM: stackoverflow.com/questions/4667483/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню