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

Поясніть, будь ласка, використання параметрів Xms та Xmx в JVM. Які значення для них встановлені за замовчуванням?

Рішення

Прапор 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)

Виконайте команду java -X і ви отримаєте список всіх опцій -X:

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:
                      append to end of bootstrap class path
-Xbootclasspath/p:
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms        set initial Java heap size.........................
-Xmx        set maximum Java heap size.........................
-Xss        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, а також з багатьма іншими важливими речами :)

Коментарі (0)

Саме питання вже було розглянуто вище. Просто додамо частину значень за замовчуванням.

За матеріалами http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Значення Xmx за замовчуванням буде залежати від платформи та обсягу пам'яті, доступної в системі.

Коментарі (1)