我觉得比较_JAVA_OPTIONS
和JAVA_TOOL_OPTIONS
会很好.
包含JAVA_OPTS
是为了完整.它不是JVM的一部分,但是有很多关于它的问题.
我知道:
到目前为止,我发现:
- 101不是JDK使用的,而是许多其他应用程序使用的(参见this post).
-
JAVA_TOOL_OPTIONS
and_JAVA_OPTIONS
are ways to specify JVM arguments as an environment variable instead of command line parameters.- 至少有
java
人和javac
人被逮捕 - They have this precedence:
-
_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
的文件.The documentation for JAVA_TOOL_OPTIONS
并不能说明其中的区别:
由于命令行不能总是被访问或修改,例如在嵌入式虚拟机中,或只是在脚本深处启动的虚拟机中,因此提供了一个JAVA_TOOL_OPTIONS变量,以便在这些情况下启动代理
...
Example 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