Типы опций командной строки для запуска виртуальной машины Java

Источник: Java Perfomance (Hunt & John, 2011)

Существует три типа опций командной строки: стандартные, нестандартные и опции разработчиков. Стандартные опции могут использоваться в любой реализации JVM, как того требует the Java Virtual Machine Specification. Они остаются неизменными от релиза к релизу, однако могут стать deprecated в релизах, следующих за тем, в котором они были представлены впервые.

Нестандартные опции начинаются с префикса -X. Реализации JVM не обязаны поддерживать эти ключи и их выполнение не гарантируется для каждой отдельно взятой реализации. Они могут быть изменены в последующих релизах Java SDK без предупреждения.

Опции разработчика начинаются с префикса -XX. Часто они предъявляют особые требования для корректной работы и могут запрашивать привилегированный доступ к параметрам конфигурации системы. Как и нестандартные, эти опции могут изменяться от релиза к релизу без предупреждения.

Опции командной строки управляют значениями внутренних переменных виртуальной машины HotSpot, каждое из которых имеет тип и значение по умолчанию. Для булевых переменных наличие или отсутствие значения в командной строке может управлять внутренним значением переменной виртуальной машины. Если речь идёт об опциях для разработчиков, то значение + или - перед названием соответствует значениям true или false. Например: -XX: +AggressiveOpts включает дополнительную оптимизацию HotSpot. И напротив, -XX: -AggressiveOpts её отключает. Опции разработчика, которые принимают некоторое значение, обычно записываются так: -XX:OptionName=<N>, где N – некоторое число. Почти все опции, принимающие дополнительные аргументы, могут принимать целочисленные значения совместно с суффиксом k, m или g, который соответствует приставкам кило-, мега- или гига- соответственно.