Java堆空间问题,如何增加堆大小?

4
我正在运行一个指向asant的".bat"文件:
C:\Sun\SDK\bin\asant Startbds

再次提到我拥有的一个XML文件,build.xml:

<target name="Startbds" description="Start bds">

目前情况还好,但是我现在添加了更多的数据,导致出现内存不足错误:

java.lang.outOfMemoryError: Java heap space

我试图通过各种方法来增加堆空间,这里是我搜索解决方案时找到的一些方法:

  • 使用cmd命令行设置ANT_OPTS=-Xms512m -Xmx512m(没有起作用,出现了相同的错误消息)
  • 编辑asant.bat文件,在"-set ANT_OPTS"这一行进行修改

.

set ANT_OPTS="-Dos.name=Windows_NT" -Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

TO

set ANT_OPTS="-Xms512m -Xmx512m" "-Dos.name=Windows_NT" -Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

但是这给我显示了错误信息:
"Invalid initial heap size: -Xms512m -Xmx512m
 Could not create the Java virtual machine."

你有什么想法可以增加堆大小吗?还可以指出我在哪里找到一个监视堆大小的工具。

提前感谢。

3个回答

6
通过使用"-Xms512m -Xmx512m",您只提供了一个参数。 -Xms希望剩余的参数指定最小堆大小。因此,您定义了最小堆大小为"512m -Xmx512m",这不是一个有效的值。
您需要将这些开关作为两个参数提供:
set ANT_OPTS=-Xms512m -Xmx512m "-Dos.name=Windows_NT" ...

谢谢你的提示。我没有收到错误信息:“Invalid initial heap size: -Xms512m -Xmx512m Could not create the Java virtual machine.” 但是我仍然遇到了Java堆空间的问题。 - Ikky
我尝试将C盘的页面大小增加到5GB,然后尝试将堆大小增加到4GB,但现在我收到错误消息:“无法为对象堆保留足够的空间”。有限制吗? - Ikky
@ikky:一个限制是您计算机中可用的物理内存。另一个限制是单个进程可以拥有的最大堆大小(我认为在32位Windows上为2GB),减去JVM需要用于其他部分的一些空间。 - Joachim Sauer

1

我认为如果你在Windows系统中,你不需要给你的设置加双引号。 这里是我在某个地方看到的一个例子:

set ANT_OPTS=-Xms512m -Xmx512m  (Windows)
export ANT_OPTS="-Xms512m -Xmx512m"  (ksh/bash)
setenv ANT_OPTS "-Xms512m -Xmx512m"  (tcsh/csh)

关于监控堆使用情况,如果您正在Windows上使用最新的JDK,则应该拥有Sun的VisualVM。


0
在Eclipse中,选择“窗口”->“首选项”->“Tomcat”->“JVM设置”->“追加到JVM参数:”。
-XX:MaxPermSize=512m

-Xms512m

-Xmx512m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接