2014-04-03 3 views
2

내 maven 프로젝트에서 내 웹 서비스에서 단위 테스트를 수행하는 라이브러리 (vraptor-test)가 있습니다. 이 테스트를 실행하기 위해이 라이브러리는 임베디드 Tomcat을 시작합니다.OutOfMemoryError : 임베디드 Tomcat 시작시 PermGen 공간

Tomcat tomcat = new Tomcat();

내가 종속성 트리를 점검 한

및 테스트 라이브러리에서 내 프로젝트에 추가 representss 바람둥이 관련 항아리 아래 목록 :

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

, 나는 배 바람둥이에서 setenv.bat에 변화를 만들 것 어쨌든 임베디드 Tomcat을 실행하고 있기 때문에 나는 그 폴더를 찾을 수없고 단지 그것의 항아리 만 찾을 수있다.

이클립스 (윈도우 -> 환경 설정 -> 자바 -> 설치된 JREs -> jdk -> 편집 -> 기본 VM 인수)에서 JVM 메모리를 늘리려고했는데 -Xmx1024M -Xms1024M -XX:PermSize=2048m -XX:MaxPermSize=2048m에 여전히 동일한 오류가 발생합니다.

내 내장 된 바람둥이의 영구 공간을 어디에서 변경할 수 있습니까?

+0

어떻게 테스트를 실행합니까? 이클립스에서? – Thomas

+0

예 Thomas, Junit 플러그인 사용. –

답변

2

서버 탭에서 Tomcat 서비스를 두 번 클릭하고 "열기 실행 구성"을 클릭하여 Tomcat 시작 구성 창을 엽니 다. 그런 다음 변경 사항에 VM 인수가 부여됩니다 (기본 VM 인수와 다름).

편집 : Junit 테스트에서 JAR을 실행하는 경우 Junit 실행 구성에서 VM 인수를 변경해야합니다. 실행/디버그 실행 구성을보고 인수 탭을 편집 할 수 있습니다.

+2

OP가 임베디드 tomcat을 사용하고 유닛 테스트에서 시작한다면 Tomcat 서비스가 있습니까? 나는 그가 테스트 환경의 실행 구성에서 VM 인수를 설정해야한다고 말했을 것이다. :) – Thomas

+0

@stevebot, 나는 당신이 의미하는 Tomcat 서비스를 가지고있다. 그러나 그것은 다른 Tomcat을 참조한다. (자기 자신을 다운로드해서 설치 폴더를 안다.) 나는 이것이 사실이라고 생각하지 않지만 어쨌든 시도해 보았고 동일한 오류가 발생했습니다. –

+0

@Thomas, 테스트 환경의 VM 인수를 어떻게 설정합니까? 제 말은 임베디드 톰캣입니다. –

관련 문제