如何通过环境variables设置Java的最小和最大堆大小?
如何通过环境variables设置Java的最小和最大堆大小?
我知道启动java时可以设置堆大小,但我希望通过我的服务器上的环境variables来调整。
你不能直接使用环境variables。 您需要使用传递给java命令的一组“非标准”选项。 运行:java -X获取详细信息。 你正在寻找的选项是-Xmx和-Xms(这是“初始”堆大小,所以可能是你在找什么。)
某些产品(如Ant或Tomcat)可能带有一个查找JAVA_OPTS环境variables的批处理脚本,但它不是Java运行时的一部分。 如果您正在使用其中一种产品,则可以像下面这样设置variables:
set JAVA_OPTS="-Xms128m -Xmx256m"
你也可以用你自己的命令行来采取这种方法,例如:
set JAVA_OPTS="-Xms128m -Xmx256m" java ${JAVA_OPTS} MyClass
如果你想要任何java
进程,不仅仅是ant或者Tomcat,而且要使用环境variables_JAVA_OPTIONS
来select-Xmx
这样的选项。
在bash中: export _JAVA_OPTIONS="-Xmx1g"
实际上,有一种方法可以通过环境variables为Sun的JVM设置全局默认值。
请参阅如何设置java系统属性,以便在启动JVM时不会将其添加到命令行参数中,从而使其生效 。
你不能使用环境variables。 这是通过“非标准”选项完成的。 运行: java -X
获取详细信息。 你正在寻找的选项是-Xmx
和-Xms
(这是“初始”堆大小,所以可能是你在找什么。)
我认为你唯一的select是将java包装在一个脚本中,该脚本将环境variablesreplace为命令行
几个注意事项:
-
Apache Ant不知道JAVA_OPTS,而Tomcat的启动脚本是这样。 对于Apache ant,使用ANT_OPTS来影响运行/ ant /的JVM的环境,但不影响ant可能启动的东西。
-
您可以设置的最大堆大小完全取决于环境:对于大多数32位系统,无论可用内存如何,可以请求的最大堆空间量都在2GiB范围内。 64位系统上最大的堆是“非常大的”。 此外,由于堆由JVMpipe理,并且不希望大量交换到磁盘,所以实际上也受到物理内存的限制。
-
对于服务器环境,您通常需要将-Xms和-Xmx设置为相同的值:这将修复特定大小的堆的大小,并且垃圾收集器的工作量会减less,因为堆不会被重新调用,大小。