2010-01-12 15 views
9

Używam witryny Mavena: uruchom wygenerować pokrycia kodu cobertura ...Maven Cobertura OutOfMemoryError

Poniżej moja konfiguracja pom.xml dla Cobertura:

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

Jednak jestem coraz OutOfMemoryError na koniec strony: uruchom. Proszę zasugerować, jak pozbyć się tego błędu. (Próbowałem wszystkie te -Xmx, -XX opcji ...)

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

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

Odpowiedz

15

pomocą tej właściwości w pom.xml:

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

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

</project> 
+0

Mam to! Dodanie 512m w pom.xml rozwiązało mój problem. Dziękuję wszystkim – KrishPrabakar

+0

Następnie rozważcie głosowanie w górę i zaakceptowanie odpowiedzi od Jean-Philippe Briend. – ewernli

1

Próbowałeś coś takiego export MAVEN_OPTS=-Xmx1024m (lub największej wartości, które pasują do Twojego urządzenia)?

Jeśli nadal nie masz wystarczającej ilości pamięci, aby uruchomić program maven, to sugeruję, aby spróbować wyłączyć inną wtyczkę i wykluczyć niektóre klasy z zasięgu testu, aby sprawdzić, czy to naprawdę problem z pamięcią.

<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

EDIT

Inne pomysły:

Ustaw następujące właściwości (patrz cobertura plugin properties)

-Dmaven.cobertura.report.maxmemory=xxx 
-Dmaven.cobertura.instrumentation.maxmemory=xxx 

Spróbuj użyć rozwidlenia lub zwiększ pamięć za pomocą następujących elementów. Nie jestem pewien, czy to działa dla cobertury, ale wydaje się działać dla junit. Fragment z tego page:

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

lub

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

To jest mój MAVEN_OPTS: -XX: MaxPermSize = 512m-Xms128m -Xmx600m (zmieniłem go na -Xmx1024m, ale dostałem następujący błąd: Błąd wystąpił podczas inicjalizacji VM Nie można zarezerwować wystarczająco dużo miejsca dla obiektu sterty Nie można utworzyć maszynę wirtualną Java.) – KrishPrabakar

+0

Hi ewernli, Próbowałem, ale nadal istnieje problem ... to jest zmiana Zrobiłem go w pom.xml : (I wykluczone największe pakiety) \t \t \t \t \t \t com/xxx/**/* Test.class \t \t com/xxx/yyy/ocena/**/* .class \t \t com/xxx/yyy/common/**/*.Klasa \t \t \t \t KrishPrabakar

+0

mam go! Dodanie 512m w pom.xml rozwiązało mój problem. Dziękuję wszystkim! – KrishPrabakar

Powiązane problemy