Я подумав, що було б чудово порівняти між _JAVA_OPTIONS
та JAVA_TOOL_OPTIONS
. Я трохи шукав одного, але нічого не можу знайти, тому сподіваюся, що ми знайдемо знання тут, на Stackoverflow.
JAVA_OPTS
включено для повноти. Це не є частиною СВМ, але є багато питань щодо цього в дикій природі.
Що я знаю:
Поки що я з'ясував, що:
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
не проливає багато світла на різницю:
Оскільки до командного рядка не завжди можна отримати доступ чи змінити його, наприклад, у вбудовані VM або просто VM, запущені глибоко в скриптах, надається змінна 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
JDK_JAVA_OPTIONS
якості кращого заміни см stackoverflow.com/q/52986487/537554