2010-06-23 21 views
171

Possible Duplicate:
How to deal with “java.lang.OutOfMemoryError: PermGen space” error"java.lang.OutOfMemoryError: PermGen espacio" en Maven construir

estoy recibiendo este error mientras que la construcción del proyecto Maven, que aumentó MAVEN_OPTS pero de todos modos, he encontrado algunos mensajes similares pero están refiriendo a algo más. ¿Cómo puedo solucionar esto?

The system is out of resources. 
Consult the following stack trace for details. 
java.lang.OutOfMemoryError: PermGen space 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at org.codehaus.plexus.compiler.javac.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:56) 
     at com.sun.tools.javac.comp.Annotate.<init>(Annotate.java:52) 
     at com.sun.tools.javac.comp.Annotate.instance(Annotate.java:36) 
     at com.sun.tools.javac.jvm.ClassReader.<init>(ClassReader.java:215) 
     at com.sun.tools.javac.jvm.ClassReader.instance(ClassReader.java:168) 
     at com.sun.tools.javac.main.JavaCompiler.<init>(JavaCompiler.java:293) 
     at com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:72) 
     at com.sun.tools.javac.main.Main.compile(Main.java:340) 
     at com.sun.tools.javac.main.Main.compile(Main.java:279) 
     at com.sun.tools.javac.main.Main.compile(Main.java:270) 
     at com.sun.tools.javac.Main.compile(Main.java:87) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:420) 
     at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:141) 
     at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:493) 
     at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) 
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 
+1

Hay muchas preguntas similares si busca SO para el "espacio PermGen" –

+1

umm esto es mientras estoy desplegando en tomcat Aún no he llegado tan lejos, así que no es lo mismo que lo ve. Ni siquiera uso tomcat Uso el error jboss es durante la construcción maven –

+6

@Paul Tomblin Estoy de acuerdo, pero ninguno de ellos se refieren a errores al construir un proyecto –

Respuesta

296

Cuando dice que aumentó MAVEN_OPTS, ¿qué valores aumentó? ¿Se incrementa el MaxPermSize, como en el ejemplo:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m" 

(o en Windows :)

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m 
+7

¿Puedo establecer esta propiedad de alguna manera en pom.xml? Necesito hacer que mi compilación sea portátil para diferentes entornos. –

+5

él lo sabe. no es lo que pidió –

+19

solo una nota para usuarios de mac/linux, simplemente agregue una declaración de exportación a su ~/.profile (o nombre de archivo similar). Por ejemplo: export MAVEN_OPTS = "- Xmx512m -XX: MaxPermSize = 256m" ... y reinicie su shell. Trabajó para mi. –

16

Aumente el tamaño de su espacio permanente, por supuesto. Use la opción -XX:MaxPermSize=128m. Establezca el valor en algo apropiado.

22

Si desea hacer esta parte de su POM para una acumulación repetible, puede utilizar el tenedor -variant de algunos de los plugins (especialmente compiler:compile y surefire:test):

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> 
    <configuration> 
     <fork>true</fork> 
     <meminitial>128m</meminitial> 
     <maxmem>1024m</maxmem> 
     <compilerArgs> 
     <arg>-XX:MaxPermSize=256m</arg> 
     </compilerArgs> 
    </configuration> 
    </plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18</version> 
    <configuration> 
     <forkCount>1</forkCount> 
     <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> 
    </configuration> 
</plugin> 
+3

Es mejor tenerlo en el pom para que otros desarrolladores/entornos no encuentren el OOME. –

+0

Desafortunadamente, cambia con las versiones de Java, por lo que aún puede ser necesaria cierta estandarización. (Por ejemplo, usar% JAVA_1_7_HOME% como lo está haciendo Apache Commons (ya que toolchain podría no estar listo para ser utilizado en esas situaciones). – eckes

+0

Agregar esta arg causaría una advertencia/error de JVM al ejecutar build en Java 1.8? – djangofan

0

me han encontrado una solución del comando git fiesta cuando se intenta generar la guerra usando git CLE mvn una instalación para “java.lang.OutOfMemoryError: PermGen espacio” en Maven construir vienen de error

use below command first 

$ export MAVEN_OPTS="-Xmx512m -Xss32m" 

then use your mvn command to clean install /build war file 

$ mvn clean install 

NOTE: you don't need -XX:MaxPermSize argument in MAVEN_OPTS when your are using jdk1.8 
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=XXXm; support was removed in 8.0 
0

Cuando me encontré con esta excepción, he resuelto mediante el uso de Ejecutar configuraciones ... panel como muestra la imagen below.Especially, en la pestaña JRE, los argumentos VM son los críticos
("-Xmx1024m -Xms512m -XX: MaxPermSize = 1024m -XX: PermSize = 512m").

enter image description here

0

Nos enfrentamos a este error al montón generación permanente es completa y algunos de nosotros utilizamos símbolo del sistema para construir nuestro proyecto experto en ventanas. ya que tenemos que aumentar el tamaño del montón, podríamos fijar nuestra variable de entorno @ Panel de Control/Sistema y seguridad/Sistema y hay que hacer clic sobre la configuraciónCambiar y seleccione Avanzado y defina la variable de Medio Ambiente de la siguiente manera

  • Variable- nombre: MAVEN_OPTS
  • variable-valor: -XX: MaxPermSize = 128m
0

Este error muy molesto por lo que lo que hice: En Windows:

Edit system environment variables - > Edit Variables -> New 

luego llenar

MAVEN_OPTS 
-Xms512m -Xmx2048m -XX:MaxPermSize=512m 

enter image description here

continuación, reinicie la consola y ejecute el experto en construir de nuevo. No más problemas de tamaño de espacio/permanente de Maven.

Cuestiones relacionadas