Я подумал, что было бы здорово провести сравнение между _JAVA_OPTIONS и JAVA_TOOL_OPTIONS.
Я искал немного для одного, но я ничего не могу найти, поэтому надеюсь, что мы найдем здесь знания на Stackoverflow.
 JAVA_OPTS включен для полноты. Это не часть JVM, но в нем много вопросов.
Что я знаю:
До сих пор я узнал, что:
-   JAVA_OPTSне используется JDK, а рядом других приложений (см. этот пост).
-   JAVA_TOOL_OPTIONSи_JAVA_OPTIONS- это способы указания аргументов JVM в качестве переменной окружения вместо параметров командной строки.-  Поднимаются как минимум javaиjavac
-  У них есть это преимущество:
-  _JAVA_OPTIONS(перезаписывает остальные)
- Параметры командной строки
-  JAVA_TOOL_OPTIONS(перезаписывается другими)
 
-  
 
-  Поднимаются как минимум 
Что я хотел бы знать
-  Есть ли официальная документация, сравнивающая JAVA_TOOL_OPTIONSи_JAVA_OPTIONS
-  Существуют ли другие различия между JAVA_TOOL_OPTIONSи_JAVA_OPTIONS(кроме приоритета).
-  Какие исполняемые файлы выбирают JAVA_TOOL_OPTIONSи_JAVA_OPTIONS(в дополнение кjavaиjavac)
-  Любое ограничение на то, что может быть включено в JAVA_TOOL_OPTIONSи_JAVA_OPTIONS
Официальная документация
Мне не удалось найти документацию о _JAVA_OPTIONS. Документация для JAVA_TOOL_OPTIONS не проливает много света на разницу:
Поскольку в командной строке не всегда можно получить доступ или изменить, например, во встроенных виртуальных машинах или просто виртуальных машинах, запущенных глубоко внутри сценариев, предоставляется переменная JAVA_TOOL_OPTIONS, позволяющая запускать агентов в этих случаях.
...
Пример script
Это код, который я использовал, чтобы понять это. Консольный вывод включается в качестве комментариев:
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
