2010-01-12 17 views
9

estoy usando Maven sitio: correr para generar una cobertura de código Cobertura ...Maven Cobertura OutOfMemoryError

La siguiente es la configuración de mi pom.xml de Cobertura:

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

Sin embargo estoy recibiendo en OutOfMemoryError el final del sitio: ejecutar. Sugiera cómo deshacerse de este error. (He intentado todas las opciones -XX -Xmx, ...)

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 –

Respuesta

15

Utilice esta propiedad en su pom.xml:

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

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

</project> 
+0

¡Lo tengo! Agregar 512m en pom.xml resolvió mi problema. Gracias a todos – KrishPrabakar

+0

Luego considere votar y acepte la respuesta de Jean-Philippe Briend. – ewernli

1

¿Usted intentó algo así como export MAVEN_OPTS=-Xmx1024m (o el valor más alto que coincidan con su máquina)?

Si aún no tiene suficiente memoria para ejecutar Maven, le sugiero que intente desactivar otro complemento y excluya algunas clases de la cobertura de prueba para comprobar si se trata realmente de un problema de memoria.

<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

EDITAR

Otras ideas:

Establecer las propiedades siguientes (véase la cobertura plugin properties)

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

Intente utilizar la horquilla o aumente la memoria con lo siguiente. No estoy seguro si funciona para cobertura, pero parece funcionar para junit. Fragmento de esta page:

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

o

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

Este es mi MAVEN_OPTS: -XX: MaxPermSize = 512m -Xms128m -Xmx600m (Lo cambié a -Xmx1024m pero obtuve el siguiente error: Error ocurrido durante la inicialización de VM No se puede reservar espacio suficiente para montón de objetos No se pudo crear la máquina virtual de Java.) – KrishPrabakar

+0

Hola ewernli, intenté pero todavía existe problema ... esto es el cambio lo hice en pom.xml : (excluí los mayores paquetes) \t \t \t \t \t \t com/xxx/**/* Test.class \t \t com/xxx/yyy/calificación/**/* .class \t \t com/xxx/yyy/common/**/*.clase \t \t \t \t KrishPrabakar

+0

lo tengo! Agregar 512m en pom.xml resolvió mi problema. ¡Gracias a todos! – KrishPrabakar

Cuestiones relacionadas