JAVA_OPTS和JAVA_TOOL_OPTIONS有什么区别?

29

这些环境变量应该在何时使用?


2个回答

20

JAVA_TOOL_OPTIONS是一些JDK工具读取的环境变量,但其适用范围有限。

JAVA_OPTS是Apache Tomcat和其他一些应用程序使用的约定,但据我所知,它不会被Sun / Oracle发布的任何JDK工具直接识别。

参考来源: https://forums.oracle.com/forums/thread.jspa?messageID=6438415

JAVA_OPTS不是java可执行文件本身会识别的环境变量。相反,各种包装Java启动的脚本通常会使用名为JAVA_OPTS的环境变量来配置Java可执行文件(例如,Tomcat启动脚本就是这样做的)。


17

请参阅“what is”文档“工具选项”文档

JAVA_TOOL_OPTIONS主要用于开发工具、监控工具等,而JAVA_OPTS则用于运行'普通'Java程序,我认为人们往往会混合使用(从谷歌显示的例子来看)。


1
一个真实世界的例子:JAVA_TOOL_OPTIONS被TeamCity CI用于向步骤运行器(如“Simple Build Tool”(Scala SBT))传递设置,用户需要使用JAVA_OPTS以避免覆盖由TeamCity服务器传递的隐式系统参数,例如-http_proxy可能是其中之一。 - conny
1
另一个不同之处在于,当定义了JAVA_TOOL_OPTIONS时,总是会将消息回显到stdout,例如Picked up JAVA_TOOL_OPTIONS: -XX:+UseG1GC -Xmx4G - conny
1
如果对于使用较新JVM的读者有价值,那么上述链接也可以在java 17java 11中找到。 - charlie arehart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接