131 votes

Java.lang.OutOfMemoryError: Espace de heap Java dans Maven

Lorsque je lance maven test, une java.lang.OutOfMemoryError se produit. J'ai cherché des solutions en ligne et j'ai essayé d' exporter MAVEN_OPTS=-Xmx1024m, mais cela n'a pas fonctionné. Quelqu'un connait-il d'autres solutions pour ce problème? J'utilise maven 3.0

Collez le message d'erreur ici lorsque vous exécutez mvn test -e

Tests en échec:
  warning(junit.framework.TestSuite$1)
  testDefaultPigJob\_1(com.snda.dw.pig.impl.DefaultPigJobLocalTest)
  testDefaultPigJob\_2(com.snda.dw.pig.impl.DefaultPigJobLocalTest)

Tests exécutés: 11, Échecs: 3, Erreurs: 0, Ignorés: 0

10/11/01 13:37:18 INFO executionengine.HExecutionEngine: Connexion au système de fichiers hadoop sur: file:///
\[INFO\] ------------------------------------------------------------------------
\[INFO\] ÉCHEC DE LA CONSTRUCTION
\[INFO\] ------------------------------------------------------------------------
\[INFO\] Temps total: 30.063s
\[INFO\] Terminé à: Lun Nov 01 13:37:18 PDT 2010
\[INFO\] Mémoire finale: 3M/6M
\[INFO\] ------------------------------------------------------------------------
\[ERROR\] Échec de l'exécution du goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) sur le projet dw.pig: Il y a des échecs de test.
\[ERROR\]
\[ERROR\] Veuillez consulter E:\\Code\\Java\\workspace\\dw.pig\\target\\surefire-reports pour les résultats des tests individuels.
\[ERROR\] -> \[Aide 1\]
org.apache.maven.lifecycle.LifecycleExecutionException: Échec de l'exécution du goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) sur le projet dw.pig: Il y a des échecs de test.

Veuillez consulter E:\\Code\\Java\\workspace\\dw.pig\\target\\surefire-reports pour les résultats des tests individuels.
         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:199)
         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:140)
         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
         at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:314)
         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:151)
         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
         at org.apache.maven.cli.MavenCli.main(MavenCli.java:132)
         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.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoFailureException: Il y a des échecs de test.

Veuillez consulter E:\\Code\\Java\\workspace\\dw.pig\\target\\surefire-reports pour les résultats des tests individuels.
          at org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugin.java:629)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:195)
          ... 19 more
\[ERROR\]
\[ERROR\] Re-exécutez Maven en utilisant l'option -X pour activer un journal de débogage complet.
\[ERROR\]
\[ERROR\] Pour plus d'informations sur les erreurs et les solutions possibles, veuillez lire les articles suivants:
\[ERROR\] \[Aide 1\] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc

0 votes

Peut-être avez-vous une fuite de mémoire dans votre test? Malgré le fait qu'il soit récupéré par le ramasse-miettes, vous pouvez toujours créer une fuite de mémoire en Java : ibm.com/developerworks/library/j-leaks

7voto

Instein Points 181

Comme mentionné dans les réponses ci-dessus, étant donné que Surefire crée une nouvelle JVM pour exécuter vos tests, vous voulez passer -Xmx1024m à la nouvelle JVM au lieu de la JVM où vous démarrez mvn test.

Je voulais juste ajouter que vous pouvez le faire dans votre commande comme suit

mvn test -DargLine="-Xmx1024m"

Cela a un effet équivalent à ajouter l'option JVM à la configuration du plugin Surefire dans le fichier pom.xml:

  -Xmx1024m

5voto

Pour résoudre java.lang.OutOfMemoryError: Java heap space dans Maven, essayez de configurer la configuration suivante dans le pom

  org.apache.maven.plugins
  maven-surefire-plugin
  ${maven-surefire-plugin.version}

        true
        true
        -XX:MaxPermSize=500M

1 votes

+1 pour avoir mentionné MaxPermSize. Si votre erreur de mémoire est causée par le chargement d'un nombre incalculable de classes comme la création d'un nouveau HiveContext dans votre test unitaire, voici votre solution.

1 votes

Oracle a complètement supprimé l'espace Perm gen dans la version JDK 8. Ainsi, définir -XX:MaxPermSize donnera un avertissement : "Avertissement OpenJDK 64-Bit Server VM : Ignorer l'option MaxPermSize; le support a été supprimé dans 8.0"

-2voto

Errabi Ayoub Points 1814

Non seulement la mémoire du tas. augmentez également la taille de perm pour résoudre cette exception dans maven en utilisant ces variables dans la variable d'environnement.

nom de la variable: MAVEN_OPTS
valeur de la variable: -Xmx512m -XX:MaxPermSize=256m

Exemple :

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

0 votes

Ensuite, l'erreur ne serait pas "Espace de tas Java", mais différente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X