В чем разница между параметрами -, -X и параметрами -XX в JVM?

Существует множество параметров для JVM. Некоторые начинаются с -, например, -сервера, -клиента. Некоторые начинаются с -X, например -Xms, -Xmx. Некоторые начинают с -XX, например -XX: PermSize, -XX: UseParallelGC.

Итак, вот мой вопрос. Поскольку эти параметры не дублируются, зачем начинать с так много разных префиксов? Почему бы просто не использовать "-". Я предполагаю, что для этого существуют какие-то стандарты. Параметры -XX являются настройками расширения и не поддерживаются всеми объектами JVM. Это так?

Ответ 1

Да, это уровень поддержки. Варианты ванили ( "-" ) поддерживаются в будущих версиях, а X не поддерживаются. Кроме того, опции XX не рекомендуются для случайного использования.

В качестве примера см. документацию IBM JVM: http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix64.60%2Fdiag%2Fappendixes%2Fcmdline%2Fcommands_jvm.html

Ответ 2

Это три основные категории аргументов командной строки:

  • Стандартные параметры. Параметры, которые начинаются с: - стандартные варианты, как ожидается, будут приняты всеми реализациями JVM и стабильны между версиями (хотя они могут быть устаревшими).

  • Нестандартные параметры. Параметры, начинающиеся с -X, нестандартны (не гарантируются для поддержки всех реализаций JVM) и могут быть изменены без уведомления в последующих версиях Java SDK.

  • Параметры разработчика. Параметры, начинающиеся с -XX, являются вариантами разработчика и часто имеют конкретные системные требования для правильной работы и могут требовать привилегированного доступа к параметрам конфигурации системы; они не рекомендуются для случайного использования. Эти параметры также могут быть изменены без предварительного уведомления.

src

Ответ 3

java -help:

-X     Displays information about non-standard options and exit

Ответ 4

  • Параметры, начинающиеся с -X, являются нестандартными (не гарантируется, что они поддерживаются во всех реализациях VM), и могут быть изменены без уведомления в последующих выпусках JDK.
  • Параметры, указанные в -XX, нестабильны и могут быть изменены без уведомления.

Справочник по Java