Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OutOfMemoryError:启动嵌入式Tomcat时的PermGen空间_Java_Eclipse_Tomcat_Out Of Memory_Embedded Tomcat 7 - Fatal编程技术网

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

Java OutOfMemoryError:启动嵌入式Tomcat时的PermGen空间,java,eclipse,tomcat,out-of-memory,embedded-tomcat-7,Java,Eclipse,Tomcat,Out Of Memory,Embedded Tomcat 7,我有一个库()在maven项目中的webservices上进行单元测试。为了运行这些测试,这个库启动一个嵌入式Tomcat Tomcat-Tomcat=new-Tomcat() 我已经检查了依赖关系树,下面的列表是由测试库添加到我的项目中的representss tomcat相关JAR: +- org.apache.tomcat:tomcat-catalina:jar:7.0.23:compile [INFO] | | +- org.apache.tomcat:tomcat-servlet-

我有一个库()在maven项目中的webservices上进行单元测试。为了运行这些测试,这个库启动一个嵌入式Tomcat

Tomcat-Tomcat=new-Tomcat()

我已经检查了依赖关系树,下面的列表是由测试库添加到我的项目中的representss 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内存(窗口->首选项->Java->安装的JRE->jdk->编辑->默认Vm参数)增加到
-Xmx1024M-Xms1024M-XX:PermSize=2048m-XX:MaxPermSize=2048m
,但我仍然得到相同的错误


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

双击Servers选项卡下的tomcat服务,然后单击“Open launch configuration”打开tomcat launch configuration窗口。然后,在它们中更改VM参数(与默认VM参数不同)


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

如何运行这些测试?来自Eclipse?是的,Thomas,使用Junit插件。如果OP使用嵌入式Tomcat并从单元测试开始,您确定有Tomcat服务吗?我认为他应该在测试环境的运行配置中设置这些vm参数,类似的方法是在不同的位置设置@stevebot,我确实有你所说的Tomcat服务,但它指的是另一个Tomcat(下载我自己,这样我就知道安装文件夹了)。我不认为是这种情况,但我已经尝试过了,并且得到了相同的错误。@Thomas,你能给我解释一下如何设置测试环境的vm参数吗?我的意思是,嵌入的Tomcat在您的配置(运行配置)中可以看到Junit。右键单击项目时,这就在“运行”下。@BrunoGasparotto正如stevebot所说,在运行->运行配置…->JUnit->配置下打开运行配置,然后在参数选项卡中设置参数。