2013-10-23 91 views
-1

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

我试图增加Java堆大小与

eclipse.exe -vmargs -Xms512m -Xmx1024m 
Result:JVM Error 
eclipse.exe -vmargs -Xms1024m -Xmx1024m 
Result:Again JVM error 

而且,我已经修改-Xms和-Xmx中的eclipse.ini,但我在这里不是successful.Same错误太多。

我的机器在Windows XP上有3 GB RAM。我只有一个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) 
+0

您的程序是一个Web应用程序吗?你在eclipse中使用服务器吗? – ftrujillo

+0

将数据写入xml时出错。 – user2814979

+0

但是你的程序是一个运行在tomcat,jboss等的web应用程序吗? – ftrujillo

回答

1

我觉得你并不需要将内存添加到Eclipse的堆栈跟踪。 在程序的运行配置中添加内存。 为此,请右键单击您的项目 - >运行方式 - >运行配置。在java Application /执行器下的 ,转到参数。 在那里您可以指定任何虚拟机参数。

click here

0

更改XMX和X毫秒参数会影响到内存的Eclipse使用,但不适合你在Eclipse中运行或调试的Java应用程序。

要你必须去运行运行或调试模式添加更多的内存以一个特定的Java应用程序 - >运行配置(或调试配置):

enter image description here

+0

即使在运行配置它接受-Xmx512m.But程序失败,同样的错误。如果我给-Xmx1024我也得到JVM错误。 – user2814979

+0

在这种情况下,它看起来像你的程序使用更多的内存。您可以使用VisualVM(Oracle JDK附带)配置您的应用程序。你正在阅读的xml文件的大小是多少? – ftrujillo

+0

这是我得到的错误-Xmx1024m是-----虚拟机初始化期间发生错误 无法为对象堆预留足够的空间 – user2814979

0

使用此命令来设置max和min堆为您的JVM

java -Xms256m -Xmx1024m YourClassNameHere 
1

的问题是,在JVM要为堆,这是对老年人奥赛斯像XP的一个问题连续内存。

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

解决方案:??

1)在命令行中运行程序,而Eclipse和其他内存饿应用(办公IE咨询您的任务管理器来查找出来)都没有运行。请注意,Windows XP中的最大堆大小仍然是1200M左右。

2)升级到Windows 7或8

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