2010-01-12 3 views
9

나는 메이븐 사이트를 사용하고하십시오 cobertura 코드 커버리지를 생성하기 위해 실행 ... 메이븐 Cobertura OutOfMemoryError가

다음

는 cobertura 내 pom.xml 파일의 구성입니다 :

<reporting> 
    ... 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
    </plugins> 
</reporting> 

전에서 OutOfMemoryError를 얻고있다 그러나 사이트의 끝 : 실행. 이 오류를 제거하는 방법을 제안하십시오.

Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space 
     at sun.reflect.GeneratedSerializationConstructorAccessor74.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:924) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1737) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at java.util.HashMap.readObject(HashMap.java:1030) 
     at sun.reflect.GeneratedMethodAccessor347.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) 
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480) 
     at net.sourceforge.cobertura.coveragedata.CoverageDataContainer.readObject(CoverageDataContainer.java:373) 
     at sun.reflect.GeneratedMethodAccessor348.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at java.util.HashMap.readObject(HashMap.java:1030) 
     at sun.reflect.GeneratedMethodAccessor347.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
+0

속는 : http://stackoverflow.com/questions/1920059/maven -throws-java-lang-outofmemoryerror –

답변

15

사용하여 pom.xml 파일에서이 속성 :

<project> 
... 
<build> 
... 
</build> 

<properties> 
    <cobertura.maxmem>256M</cobertura.maxmem> 
</properties> 

</project> 
+0

나는 그것을 얻었다! pom.xml에 512m을 추가하면 문제가 해결되었습니다. 감사합니다 모두 – KrishPrabakar

+0

그러면 Jean-Philippe Briend의 답변을 수락하고 투표하십시오. – ewernli

1

당신이 export MAVEN_OPTS=-Xmx1024m (또는 컴퓨터에 맞는 가장 높은 값) 같은 것을 시도해 봤어 (나는 ... 모든 -Xmx, -XX 옵션을 시도)?

여전히 maven을 실행할 수있는 메모리가 충분하지 않은 경우 다른 플러그인을 사용하지 않도록 설정하고 실제로 메모리 문제인지 확인하기 위해 테스트 범위에서 일부 클래스를 제외 시키십시오.

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>cobertura-maven-plugin</artifactId> 
<configuration> 
    <instrumentation> 
    <ignores> 
     <ignore>com.example.boringcode.*</ignore> 
    </ignores> 
    <excludes> 
     <exclude>com/example/dullcode/**/*.class</exclude> 
     <exclude>com/example/**/*Test.class</exclude> 
    </excludes> 
    </instrumentation> 
</configuration> 

http://mojo.codehaus.org/cobertura-maven-plugin/usage.html

편집

다른 아이디어 :

설정에는 다음과 같은 속성

-Dmaven.cobertura.report.maxmemory=xxx 
-Dmaven.cobertura.instrumentation.maxmemory=xxx 
합니다 ( cobertura plugin properties 참조)

포크를 사용하거나 다음과 같이 메모리를 늘리십시오. 나는 그것이 코 베르 두라를 위해 일하는 것이 확실치 않지만, junit을 위해 일하는 것 같다. 이 page에서 발췌문 :

<plugin> 
... 
<configuration> 
<forkMode>pertest</forkMode> 
</configuration> 
</plugin> 

또는

<plugin> 
... 
<configuration> 
... 
<argLine>-Xmx512m -XX:MaxPermSize=256m</argLine> 
</configuration> 
</plugin> 
+0

이것은 내 MAVEN_OPTS입니다 : -XX : MaxPermSize = 512m -Xms128m -Xmx600m (-Xmx1024m으로 바꿨지 만 다음 오류가 발생했습니다 : 오류 VM 초기화 중에 발생했습니다 개체 힙에 충분한 공간을 예약 할 수 없습니다. Java 가상 컴퓨터를 만들지 못했습니다. – KrishPrabakar

+0

안녕하세요, ewernli, 시도했지만 여전히 문제가 있습니다 ...이 변경 사항은 pom.xml에서 수행했습니다. : \t \t <계측> (I 가장 큰 패키지 제외) \t \t \t \t COM/XXX/**/* Test.class라는 \t \t COM/XXX/YYY/평가/**/* .class \t \t com/xxx/yyy/common/**/*.클래스 \t \t \t \t KrishPrabakar

+0

알았어! pom.xml에 512m을 추가하면 문제가 해결되었습니다. 모두에게 감사드립니다! – KrishPrabakar

관련 문제