增加Java堆大小后出现JVM错误

时间:2013-10-23 11:39:50

标签: java eclipse

Eclipse java堆大小设置为 -Xms512m -Xmx512m 。但由于“内存不足错误Java堆空间”,我的一个程序执行失败。

我尝试用

增加java堆大小
eclipse.exe -vmargs -Xms512m -Xmx1024m 
Result:JVM Error
eclipse.exe -vmargs -Xms1024m -Xmx1024m 
Result:Again JVM error

另外,我在eclipse.ini中修改了-Xms和-Xmx,但我没有成功。这里也有错误。

我的机器有3 GB内存和Windows XP。我只有一个eclipse安装。 Java版本是1.7。

这是eclipse上错误的堆栈跟踪

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at java.io.StringWriter.write(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToStream.processDirty(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToStream.characters(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at businessrule.implementation.WriteToXML.printtoXML(WriteToXML.java:53)
at businessrule.implementation.WriteToXML.UpdateKnowledgeBase(WriteToXML.java:41)
at businessrule.implementation.ExecuteRule2.<init>(ExecuteRule2.java:133)
at businessrule.implementation.BusinessRules.main(BusinessRules.java:81)

5 个答案:

答案 0 :(得分:1)

我认为你不需要为日食添加内存。 在程序的运行配置中添加内存。 为此,右键单击您的项目 - &gt;运行As - &gt;运行配置。 在java Application / executer下,转到参数。 在那里,您可以指定任何VM参数。

click here

答案 1 :(得分:1)

问题是JVM需要堆的连续内存,这对于像XP这样的旧操作系统来说是一个问题。

如果您已经运行Eclipse,则可能没有足够的contiguos内存。

解决方案:

1。)从命令行运行程序,而Eclipse和其他内存饥饿的应用程序(Office?IE?请咨询您的任务管理器以查明)未运行。请注意,Windows XP中的最大堆大小仍然是1200M。

2.)升级到Windows 7或8

3。)(我的首选)更改操作系统并使用Linux进行开发。

答案 2 :(得分:0)

将Xmx和Xms参数的影响更改为Eclipse使用的内存,而不是您在Eclipse中运行或调试的Java应用程序。

要在运行或调试模式下为特定Java应用程序添加更多内存,您必须转到Run - &gt;运行配置(或调试配置):

enter image description here

答案 3 :(得分:0)

使用此命令设置JVM的最大和最小堆

java -Xms256m -Xmx1024m YourClassNameHere

答案 4 :(得分:0)

您可能遇到的另一个问题是您使用的是32位JVM。看看这个:

Want to increase Java Heap Size to 4GB+: Physical Memory 8 GB, JVM 64-bit