JAVA_TOOL_OPTIONS _JAVA_OPTIONS JAVA_OPTS 那些事

本文深入解析了JAVA_TOOL_OPTIONS、JAVA_OPTS及_JAVA_OPTIONS在Java应用中的作用与区别,阐述了它们如何影响JVM参数设置,特别是在命令行应用、JNI调用及脚本嵌入场景下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值