Ответы:
Флаг 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.
OutOfMemoryError
произойдет an .
-Xms256m
«256 МБ», а не «256 МБ», так как он использует двоичные числа, а не десять. См. En.wikipedia.org/wiki/Binary_prefix . Кроме того, поскольку некоторое свободное пространство не используется для дополнительного пула пространства Survivor, объем фактически доступной памяти Runtime.getRuntime().maxMemory()
меньше значения, указанного в параметре
Запустите команду, 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 в Конфигурации запуска → Аргументы виртуальной машины . Вы можете войти -Xmx800m -Xms500m
как
Сам вопрос уже был рассмотрен выше. Просто добавив часть значений по умолчанию.
Согласно http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Значение по умолчанию Xmx будет зависеть от платформы и объема памяти, доступного в системе.
-Xmx128m -Xms64m
он может достигать максимума вокруг275m
RES mem, но при использовании-Xmx128m -Xms128m
он может достигать максимума вокруг550m
RES mem Использование Java 8 Лучше всего подчеркнуть GC и посмотреть, что происходит ...