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

时间:2009-01-06 16:16:39

标签: java environment-variables heap

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

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

7 个答案:

答案 0 :(得分:69)

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

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

set JAVA_OPTS="-Xms128m -Xmx256m"  

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

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass

答案 1 :(得分:46)

如果您想要任何java进程,而不仅仅是ant或Tomcat,请选择-Xmx等选项,请使用环境变量_JAVA_OPTIONS

在bash:export _JAVA_OPTIONS="-Xmx1g"

答案 2 :(得分:13)

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

请参阅How to set a java system property so that it is effective whenever I start JVM without adding it to the command line arguments

答案 3 :(得分:9)

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

答案 4 :(得分:4)

我认为您唯一的选择是将java包装在一个脚本中,该脚本将环境变量替换为命令行

答案 5 :(得分:3)

几点说明:

  1. Apache ant对JAVA_OPTS一无所知,而Tomcat的启动脚本也是如此。对于Apache ant,使用ANT_OPTS来影响运行/ ant /的JVM的环境,但不能影响ant可能启动的东西。

  2. 您可以设置的最大堆大小完全取决于环境:对于大多数32位系统,无论可用内存如何,您可以请求的最大堆空间量都在2GiB范围内。 64位系统上最大的堆“非常大”。此外,您实际上也受到物理内存的限制,因为堆由JVM管理,您不希望大量交换进入磁盘。

  3. 对于服务器环境,您通常希望将-Xms和-Xmx设置为相同的值:这将以一定大小修复堆的大小,并且垃圾回收器的工作量较少,因为堆将永远不必重新调整大小。

答案 6 :(得分:0)

您可以使用JAVA_TOOL_OPTIONS

示例:

export JAVA_TOOL_OPTIONS=-Xmx512m

在某些评论和another answer中已经提到了它。

OP的问题已经很老了,但由于它是该问题的第一个Google搜索结果,因此我想为了清楚起见在此处添加答案。