JAVA_TOOL_OPTIONS _JAVA_OPTIONS JAVA_OPTS 那些事

在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)

 

你可能感兴趣的:(java并发)