OutOfMemoryError:启动嵌入式Tomcat时的PermGen空间

时间:2014-04-03 14:48:08

标签: java eclipse tomcat out-of-memory embedded-tomcat-7

我有一个库(vraptor-test),可以在我的maven项目中的webservices上进行单元测试。在onder上运行这些测试,这个库启​​动一个嵌入式Tomcat。

Tomcat tomcat = new Tomcat();

我检查了依赖树,下面的列表表示测试库添加到我项目中的tomcat相关jar:

+- 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

通常,我会在tomcat文件夹下对setenv.bat进行更改以增加PermGem空间,但是,因为我正在运行嵌入式Tomcat,所以我找不到它的文件夹,只能找到它的jar。

我尝试在Eclipse中增加JVM内存(Window - > Preferences - > Java - > Installed JREs - > jdk - > Edit - > Default Vm Arguments)到-Xmx1024M -Xms1024M -XX:PermSize=2048m -XX:MaxPermSize=2048m但是我我仍然得到同样的错误。

我在哪里可以更改嵌入式tomcat的permgem空间?

1 个答案:

答案 0 :(得分:2)

双击Servers选项卡下的Tomcat服务,然后单击"打开启动配置"打开Tomcat启动配置窗口。然后,在更改VM args时(与默认VM args不同)。

编辑:如果您从Junit测试运行JAR,则需要在Junit Launch配置中更改VM参数。您可以查看Run / Debug启动配置,然后编辑参数选项卡。