我认为最好在_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
并没有太多区别:
由于无法始终访问或修改命令行,例如,在嵌入式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