2011-01-04 18 views
6

Cuando ejecuto mis pruebas unitarias en Maven en Windows recibo una excepción OutOfMemory. Traté de agregar la opción -XX: -HeapDumpOnOutOfMemoryError a surefire argLine, pero no se genera ningún archivo de volcado. También traté de agregar lo mismo a MAVEN_OPTS, pero aún nada, simplemente obtengo una excepción OutOfMemory y el proceso se bloquea hasta que lo elimine manualmente.surefire HeapDumpOnOutOfMemoryError

Mi pom es el siguiente:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration>      
     <testFailureIgnore>false</testFailureIgnore> 
     <argLine>-Xms512m -Xmx512m -XX:PermSize=256m -XX:-HeapDumpOnOutOfMemoryError</argLine> 
     <forkMode>once</forkMode>    
    </configuration> 
</plugin> 

MAVEN_OPTS:

set MAVEN_OPTS=-XX:-HeapDumpOnOutOfMemoryError 

¿Tiene usted alguna idea de por qué no se genera ningún archivo de volcado?

+0

La respuesta de @twillouer es la correcta. – t0r0X

Respuesta

2

Prueba esto:

set MAVEN_OPTS="-Dmaven.surefire.debug=\"-XX:-HeapDumpOnOutOfMemoryError\"" 
+0

Todavía nada. No veo ninguna salida. Logré encontrar la pérdida de memoria conectando usando un generador de perfiles, así que gracias de todos modos por su respuesta. – Koby

1

Su pérdida de memoria sólo puede ser fijo, ver http://jira.codehaus.org/browse/SUREFIRE-495. Es posible que desee probar surefire 2.7.1 o posterior.

+0

Gracias por su respuesta, pero mi problema no está relacionado con surefire. Utilizo la primavera en mis pruebas y tengo diferentes contextos de aplicación para los mismos granos una y otra vez. Debido a que la primavera almacena contextos de aplicación por razones de rendimiento, ninguno de ellos se destruyó y recibí el error OutOfMemory. La solución es cambiar mis pruebas para usar los mismos contextos en lugar de duplicarlos en diferentes contextos. – Koby

0

Creo que se le olvida el camino:

<argLine>-Xms512m -Xmx512m -XX:PermSize=256m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp</argLine> 

con este argumento:

 -XX:HeapDumpPath=/tmp 
+0

Esto no es necesario. El volcado de pila se crea de forma predeterminada en el directorio del proyecto (lanzo Maven a través de Netbeans). ¿Cuándo sería necesario? ¿Cuándo sería el directorio actual diferente (y no grabable)? –

Cuestiones relacionadas