Difference between _JAVA_OPTIONS JAVA_TOOL_OPTIONS and JAVA_OPTS
我认为在
我一直在寻找一个,但是什么也找不到,所以希望我们可以在Stackoverflow上找到相关知识。
包括
我知道的:
到目前为止,我发现:
-
JDK不使用
JAVA_OPTS ,而是其他许多应用程序使用JAVA_OPTS (请参阅此文章)。 -
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 上可以包含的内容的任何限制
官方文件
我找不到有关
Since the command-line cannot always be accessed or modified, for example in embedded VMs or simply VMs launched deep within scripts, a JAVA_TOOL_OPTIONS variable is provided so that agents may be launched in these cases. ...
示例脚本
这是我用来弄清楚的代码。控制台输出作为注释包括在内:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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 |
除了通过库调用启动JVM进程中的这些选项外,您几乎已经注意到了它。
没有记录
您还应该记住,不能保证其他VM会或将继续支持未记录的变量。
更新2015-08-04:为了为来自搜索引擎的人们节省五分钟,
还有另外一个区别:
并且根据https://bugs.openjdk.java.net/browse/JDK-4971166,
还要注意,使用这些命令将无法抑制的其他消息打印到标准输出。