【问题标题】:OutOfMemoryError: PermGen space when starting an embedded TomcatOutOfMemoryError:启动嵌入式 Tomcat 时的 PermGen 空间
【发布时间】:2014-05-15 11:50:20
【问题描述】:

我有一个库 (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 的永久空间?

【问题讨论】:

  • 你如何运行这些测试?来自 Eclipse?
  • 是的,Thomas,使用 Junit 插件。

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


【解决方案1】:

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

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

【讨论】:

  • 如果 OP 使用嵌入式 tomcat 并从单元测试启动它,你确定有 Tomcat 服务吗?我想说他应该在测试环境的运行配置中设置那些 vm 参数,类似的方法不同的位置。 :)
  • @stevebot,我确实有你所说的Tomcat服务,但它指的是另一个Tomcat(下载我自己,所以我知道安装文件夹)。我不认为是这种情况,但无论如何我都尝试过并且得到了同样的错误。
  • @Thomas,你能给我解释一下如何设置测试环境的 vm 参数吗?我的意思是,嵌入式 Tomcat。
  • @BrunoGasparotto 查看您的配置(运行配置),您将看到 Junit。右键单击项目时,它位于“运行”下方。
  • @BrunoGasparotto 正如 stevebot 所说,在 Run->Run Configurations...->JUnit->Your Config 下打开您的运行配置,然后在 中设置参数i>参数选项卡。
猜你喜欢
  • 2013-03-08
  • 2014-10-14
  • 2013-12-29
  • 2016-08-05
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多