2013-10-23 101 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進行開發。