如何通过环境变量设置Java的最小和最大堆大小?

Jef*_*son 70 java heap environment-variables

如何通过环境变量设置Java的最小和最大堆大小?

我知道在启动java时可以设置堆大小,但我希望在服务器上通过环境变量进行调整.

小智 73

您无法直接使用环境变量.您需要使用传递给java命令的"非标准"选项集.运行:java -X了解详细信息.你正在寻找的选项是-Xmx和-Xms(这是"初始"堆大小,所以你可能正在寻找它.)

某些产品(如Ant或Tomcat)可能附带一个查找JAVA_OPTS环境变量的批处理脚本,但它不是Java运行时的一部分.如果您使用其中一种产品,则可以将变量设置为:

set JAVA_OPTS="-Xms128m -Xmx256m"  
Run Code Online (Sandbox Code Playgroud)

您也可以使用自己的命令行来实现此方法:

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass
Run Code Online (Sandbox Code Playgroud)

  • 正如@neves 在下面的评论中提到的,这在 java 7 (https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html) 中发生了变化。您可以使用 JAVA_TOOL_OPTIONS(请参阅下面的链接和答案) (3认同)

小智 53

如果你想要任何java进程,而不仅仅是ant或Tomcat,那么就可以选择-Xmx使用环境变量这样的选项_JAVA_OPTIONS.

在bash中: export _JAVA_OPTIONS="-Xmx1g"

  • 完美,这效果很好,让我省了很多功夫。 (2认同)
  • 在 Windows 中:`set _JAVA_OPTIONS=-Xmx1g` 要使其永久化,[创建一个新的环境变量](http://superuser.com/questions/949560/how-do-i-set-system-environment-variables-in -windows-10) `_JAVA_OPTIONS` 并将其设置为 `-Xmx1g` (2认同)
  • 另请参见[_JAVA_OPTIONS与JAVA_TOOL_OPTIONS之间的差异](http://stackoverflow.com/questions/28327620/difference-between-java-options-java-tool-options-and-java-opts/40736821#40736821) (2认同)

Gau*_*ier 16

您可以使用JAVA_TOOL_OPTIONS.

例子:

export JAVA_TOOL_OPTIONS=-Xmx512m
Run Code Online (Sandbox Code Playgroud)

在一些评论和另一个答案中已经提到了它。

OP的问题已经很老了,但由于它是该问题的第一个谷歌结果,我想为了清楚起见我会在这里添加答案。

  • 应该是新接受的答案。 (2认同)

Vad*_*zim 15

实际上,有一种方法可以通过环境变量为Sun的JVM设置全局默认值.

请参阅如何设置java系统属性,以便每当我启动JVM而不将其添加到命令行参数时它都有效.


a28*_*276 10

你不能使用环境变量来做到这一点.它是通过"非标准"选项完成的.运行:java -X详细信息.您正在寻找的选项是-Xmx-Xms(这是"初始"堆大小,所以可能正是您正在寻找的.)

  • 看起来它在 Java 7 中发生了变化:http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html (2认同)