JAVA

tech2022-08-17  143

在java编程中,老会碰到JAVA_TOOL_OPTIONS  _JAVA_OPTIONS 和 JAVA_OPTS。下面就详细说说他们

  JAVA_TOOL_OPTIONS:是标准的,所有虚拟机都能识别和应用的。有些应用不方便设置JVM参数,如命令行应用、通过JNI(Java Native Interface)API调用虚拟机的应用、脚本嵌入虚拟机中的应用等。这种情况环境变量JAVA_TOOL_OPTIONS就非常有用了,它会被JNI API的JNI_CreateJavaVM函数使用。 Note: 在有些场景为了安全考虑环境变量JAVA_TOOL_OPTIONS是被禁用的,比如Solaris系统中但有效用户ID或组ID不是实际ID时则禁用此环境变量。 JAVA_OPTS:常用于一些应用的配置,如Tomcat,但它一般不作为环境变量,也不能被JVM识别的,是那些应用的自定义配置;_JAVA_OPTIONS:也是作为环境变量来替代命令行参数的,但它是JVM厂家自定义的,可以覆盖JAVA_TOOL_OPTIONS,但各厂家的不同,_JAVA_OPTIONS是Oracle的JVM,而IBM的则是用IBM_JAVA_OPTIONS。

如果想验证上面的不同也不难,如果设置了JVM能识别的环境变量,JVM会有"Picked up"的提示的,如:

export _JAVA_OPTIONS="-Dname=bill" export _JAVA_OPTIONS="-Dbill=xty ${_JAVA_OPTIONS}" export JAVA_TOOL_OPTIONS="-Dcity=beijing" java -version Picked up JAVA_TOOL_OPTIONS: -Dcity=beijing Picked up _JAVA_OPTIONS: -Dbill=xty -Dname=bill openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

 

最新回复(0)