2

我有一个库(vraptor-test),它在我的 maven 项目中的 web 服务上进行单元测试。为了运行这些测试,这个库启​​动了一个嵌入式 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,我找不到它的文件夹,只有它的 jars。

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

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

4

1 回答 1

2

双击 Servers 选项卡下的 Tomcat 服务,然后单击“Open launch configuration”打开 Tomcat 启动配置窗口。然后,在他们更改您的虚拟机参数(不同于默认的虚拟机参数)中。

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

于 2014-04-03T14:53:26.390 回答