web-dev-qa-db-fra.com

"Java.lang.OutOfMemoryError: espace PermGen" dans la construction Maven

Je reçois cette erreur en construisant le projet Maven, j'ai augmenté MAVEN_OPTS mais tout de même, j'ai trouvé des messages similaires mais ils font référence à autre chose. Comment puis-je réparer ça?

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)
180
Gandalf StormCrow

Lorsque vous dites avoir augmenté MAVEN_OPTS, quelles valeurs avez-vous augmentées? Avez-vous augmenté la MaxPermSize, comme dans l'exemple:

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

(ou sous Windows :)

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m
304
Arun R

Si vous voulez faire de cette partie de votre POM une construction répétable, vous pouvez utiliser la variante fork de quelques plugins (en particulier compiler: compile et 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>
23
eckes

Augmentez la taille de votre espace permanent, bien sûr. Utilisez l'option -XX:MaxPermSize=128m. Définissez la valeur sur quelque chose d’approprié.

16
duffymo

Cette erreur très ennuyeuse alors ce que j'ai fait: Sous Windows:

Edit system environment variables - > Edit Variables -> New

puis remplissez 

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

 enter image description here

Ensuite, redémarrez la console et réexécutez la construction maven. Plus de problèmes d'espace Maven/taille de perm.

1
Xelian

Nous sommes confrontés à cette erreur lorsque le tas de génération permanente est plein et que certains d’entre nous utilisons la commande Invite pour construire notre projet maven dans Windows. étant donné que nous devons augmenter la taille du tas, nous pouvons définir notre variable d'environnement @ ControlPanel/System and Security/System et cliquer surModifier le paramètre, sélectionner Advanced et définir la variable d'environnement comme suit

  • Nom de la variable: MAVEN_OPTS
  • Valeur de la variable: -XX: MaxPermSize = 128m
0
Ranjit

J'ai trouvé une solution de commande git bash lorsque vous essayez de construire war en utilisant git mvn clean install for «Java.lang.OutOfMemoryError: espace PermGen» dans l'erreur de construction Maven

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
mkumar0304

Lorsque j'ai rencontré cette exception, j'ai résolu le problème en utilisant le panneau Configurations d'exécution ... comme le montre l'image ci-dessous.En particulier, sous l'onglet JRE, les arguments VM sont essentiels. 
("-Xmx1024m -Xms512m -XX: MaxPermSize = 1024m -XX: PermSize = 512m").

 enter image description here

0
ÖMER TAŞCI