Я подумал, что было бы здорово иметь сравнение между _JAVA_OPTIONS " и " JAVA_TOOL_OPTIONS
.
Я искал немного, но я не могу найти ничего, поэтому я надеюсь, что мы сможем найти здесь знания на StackOverflow.
JAVA_OPTS
включен для полноты. Он не является частью JVM, но есть много вопросов об этом в дикой природе.
До сих пор я выяснил, что:
JAVA_OPTS
не используется с JDK, но и куча других приложений (см. Этот пост).JAVA_TOOL_OPTIONS
и _JAVA_OPTIONS
способы задания аргументов JVM в качестве переменной среды, а не параметрами командной строки. Ява
и javac и
_JAVA_OPTIONS
(перезаписывает другие)JAVA_TOOL_OPTIONS
(заменяется другим)JAVA_TOOL_OPTIONS
и _JAVA_OPTIONS
JAVA_TOOL_OPTIONS
и `_JAVA_OPTIONS (за исключением из старшинства).JAVA_TOOL_OPTIONS
и _JAVA_OPTIONS
(кроме Ява
и javac и
)JAVA_TOOL_OPTIONS
и _JAVA_OPTIONS
Я не смог найти любую документацию о _JAVA_OPTIONS
. Документация для JAVA_TOOL_OPTIONS` не проливают много света на разницу:
с командной строки не всегда могут быть доступны или изменения, например во встроенном смс или просто смс запустила глубоко в Скрипты, переменная JAVA_TOOL_OPTIONS обеспечивается таким образом, что агенты могут быть запущены в этих случаях. <БР>...
Это код, который я использовал, чтобы понять это. Вывод консоли включены в качестве комментариев:
export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
java -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
javac -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m"
export _JAVA_OPTIONS="-Xmx1 -Xms1"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS=
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS:
# java version "1.7.0_40"
# OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
# OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx1 -Xms1"
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
У вас почти получилось за исключением того, что эти параметры подобрал, даже если запуск виртуальной машины Java в-процесс с помощью вызова библиотеки.
Тот факт, что _JAVA_OPTIONS
не подтверждены документально свидетельствует о том, что не рекомендуется использовать эту переменную, и я'вэ видел людей злоупотребляют этим, установив его в~/.bashrc следующее`. Однако, если вы хотите добраться до сути этой проблемы, вы можете проверить источник Оракл ВМ точка доступа (например, в OpenJDK7).
Вы также должны помнить, что нет никакой гарантии других виртуальных машин или будет продолжать оказывать поддержку недокументированные переменные.
Обновление 2015-08-04: чтобы сэкономить пять минут приедут ребята из поисковых систем, _JAVA_OPTIONS
козыри, аргументы командной строки, которые, в свою очередь, Трамп JAVA_TOOL_OPTIONS
.
Есть и еще одно отличие: _JAVA_OPTIONS
является определенным оракулом. В IBM JVM использует IBM_JAVA_OPTIONS
вместо этого. Вероятно, это было сделано, чтобы иметь возможность определить параметры конкретного компьютера без столкновений. JAVA_TOOL_OPTIONS
признается всеми виртуальными машинами.
JAVA_OPTS
у без специальной обработки в JVM на всех.
И по данным https://bugs.openjdk.java.net/browse/JDK-4971166 в JAVA_TOOL_OPTIONS
включен в стандарт спецификация интерфейс JVMTI, делает лучше управляемость цитирует пробелы и должно быть всегда предпочитал вместо недокументированная точка-конкретный _JAVA_OPTIONS
.
Также помните, что используя эти отпечатки дополнительное сообщение в stdout, что может'т быть подавлено.