在shell脚本中,我设置了JAVA_OPTS环境变量(以启用远程调试并增加内存),然后执行jar文件,如下所示:
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Xms512m -Xmx512m"
java -jar analyse.jar $*
但是JAVA_OPTS env变量似乎没有任何作用,因为我无法连接到远程调试,并且JVM的内存没有任何变化。
有什么问题吗?
PS:我不能在java -jar analyse.jar $*
命令中使用那些设置,因为我在应用程序中处理命令行参数。
3条答案
按热度按时间pqwbnv8z1#
您可以设置
_JAVA_OPTIONS
而不是JAVA_OPTS
。这应该可以在没有$_JAVA_OPTIONS
的情况下工作。vof42yt12#
我不知道有哪个JVM会检查
JAVA_OPTS
环境变量,通常这是在启动JVM的脚本中使用的,它们通常只是将其添加到java
命令行中。这里需要理解的关键是,
java
的参数如果出现在-jar analyse.jar
位之前,则只会影响JVM,而不会沿着给程序。因此,将脚本中的java
行修改为:应该“只是工作”。
yyyllmsg3#
在过去12年中,发生了一些变化。
环境变量
JAVA_OPTS
过去是,现在也不是一个标准化的选项。它是由一些基于Java的工具的shell脚本 Package 器来评估的,ZoogieZork的答案中有一个关于它如何工作的例子。HEX提到的环境变量
_JAVA_OPTIONS
现在已弃用/无文档记录。从Java 9开始,建议使用变量
JDK_JAVA_OPTIONS
来完成您想要的任务,请参阅Oracle Java 9文档中的使用JDK_JAVA_OPTIONS启动器环境变量,以及此全面答案What is the difference between JDK_JAVA_OPTIONS and JAVA_TOOL_OPTIONS when using Java 11?。