我有一个库(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空间?
答案 0 :(得分:2)
双击Servers选项卡下的Tomcat服务,然后单击"打开启动配置"打开Tomcat启动配置窗口。然后,在更改VM args时(与默认VM args不同)。
编辑:如果您从Junit测试运行JAR,则需要在Junit Launch配置中更改VM参数。您可以查看Run / Debug启动配置,然后编辑参数选项卡。