2014-04-03 55 views
2

我有一個庫(vraptor-test),它在我的maven項目的webservices中執行單元測試。在onder上運行這些測試,這個庫啓​​動一個嵌入式的Tomcat。OutOfMemoryError:啓動嵌入式Tomcat時的PermGen空間

Tomcat tomcat = new Tomcat();

我檢查了依賴關係樹,和下方的測試庫添加到我的項目representss tomcat的相關罐子名單:

+- org.apache.tomcat:tomcat-catalina:jar:7.0.23:compile 
[INFO] | | +- org.apache.tomcat:tomcat-servlet-api:jar:7.0.23:compile 
[INFO] | | +- org.apache.tomcat:tomcat-juli:jar:7.0.23:compile 
[INFO] | | +- org.apache.tomcat:tomcat-annotations-api:jar:7.0.23:compile 
[INFO] | | +- org.apache.tomcat:tomcat-api:jar:7.0.23:compile 
[INFO] | | \- org.apache.tomcat:tomcat-util:jar:7.0.23:compile 
[INFO] | +- org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.23:compile 
[INFO] | \- org.apache.tomcat:tomcat-jasper:jar:7.0.23:compile 
[INFO] |  +- org.apache.tomcat:tomcat-jsp-api:jar:7.0.23:compile 
[INFO] |  +- org.apache.tomcat:tomcat-el-api:jar:7.0.23:compile 
[INFO] |  +- org.eclipse.jdt.core.compiler:ecj:jar:3.7:compile 
[INFO] |  \- org.apache.tomcat:tomcat-jasper-el:jar:7.0.23:compile 

當我運行我的測試類下面彈出錯誤並在測試不完整甚至:

SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space 

通常情況下,我會更改setenv.bat tomcat下折呃增加PermGem空間,但是,因爲我運行的是嵌入式Tomcat,所以我找不到它的文件夾,只能找到它的罐子。我試過在Eclipse中增加JVM內存(窗口 - >首選項 - > Java - >安裝JREs - > jdk - >編輯 - >默認Vm參數)到-Xmx1024M -Xms1024M -XX:PermSize=2048m -XX:MaxPermSize=2048m,但我仍然收到相同的錯誤。

我在哪裏可以更改嵌入式tomcat的permgem空間?

+0

你如何運行這些測試?從Eclipse? – Thomas

+0

是托馬斯,使用Junit插件。 –

回答

2

雙擊服務器選項卡下的Tomcat服務,然後單擊「打開啓動配置」以打開Tomcat啓動配置窗口。然後,在他們的變化你的虛擬機參數(不同於默認虛擬機參數)。

編輯:如果您從Junit測試運行JAR,則需要更改Junit Launch配置中的VM參數。您可以查看運行/調試啓動配置,然後編輯參數選項卡。

+2

如果OP使用嵌入式tomcat並從單元測試中啓動它,您確定有Tomcat服務嗎?我會說他應該在測試環境的運行配置中設置這些vm參數,類似的方法不同的位置。 :) – Thomas

+0

@stevebot,我確實有你所說的Tomcat服務,但它指的是另一個Tomcat(下載我的自我,所以我知道安裝文件夾)。我不認爲這是事實,但我已經嘗試過,並得到同樣的錯誤。 –

+0

@Thomas,你能否給我解釋一下如何設置測試環境的vm參數?我的意思是,嵌入式的Tomcat。 –