_JAVA_OPTIONS、JAVA_TOOL_OPTIONS和JAVA_OPTS之间的区别示例脚本
2022-08-31 06:08:57
我认为在 和 之间进行比较会很棒。我一直在寻找一个,但我找不到任何东西,所以我希望我们可以在这里找到Stackoverflow的知识。_JAVA_OPTIONS
JAVA_TOOL_OPTIONS
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_TOOL_OPTIONS
的文档并没有对差异进行太多的阐述:_JAVA_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