如何通过环境变量设置Java的最小和最大堆大小?
我知道在启动java时可以设置堆大小,但我希望在服务器上通过环境变量进行调整.
任何人都可以解释当_JAVA_OPTIONS环境变量定义时以及在Windows机器上启动应用程序时Java会做什么?
根据Oracle的说法,设置系统属性的唯一方法是通过命令行 -D 参数,如下所示:
java -Dmy.prop=value com.package.MyClass
Run Code Online (Sandbox Code Playgroud)
这真的是唯一的方法吗?是不是可以创建一些包含所有这些属性的system.properties文件,并且在 JVM 启动时会自动读取?
我确切地说我不能使用该System.setProperty(String,String)功能。[1]
通过命令行参数设置此文件也可以:
java -Fsystem.properties com.package.MyClass
Run Code Online (Sandbox Code Playgroud)
我已经搜索了我知道的地方(并发现 IBM 的 JVM 有一种方法),但我仍然两手空空......
[1]:目标是设置默认的Charset,这主要是通过file.encoding属性来完成的,但仅限于VM启动阶段。在运行时设置此属性不会更改默认字符集,并且也无法“以编程方式”更改它。
我在使用 JDK10 的 Tomcat 8.5 中遇到了一个奇怪的问题。它启动正常,但在发出关闭命令时,我遇到了这个注意:
注意:选择 JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/ sun.rmi.transport=ALL-UNNAMED
java 进程仍在运行,因此提示我杀死 PID 以停止它。
任何人都知道我需要做些什么来解决这个问题?
谢谢!