97 votes

Échec de la construction de Maven en dehors de la mémoire

À partir d'aujourd'hui, ma compilation maven échoue.

[INFO] [ERROR] Unexpected
[INFO] java.lang.OutOfMemoryError: Java heap space
[INFO]  at java.util.Arrays.copyOfRange(Arrays.java:2694)
[INFO]  at java.lang.String.<init>(String.java:203)
[INFO]  at java.lang.String.substring(String.java:1877)

[ERROR] Mémoire insuffisante ; pour augmenter la quantité de mémoire, utilisez l'indicateur -Xmx au démarrage (java -Xmx128M ...)

Depuis hier, j'ai réussi à lancer une compilation maven.

A partir d'aujourd'hui, je viens de faire passer mon tas à 3 GO . De plus, je n'ai modifié que 2 ou 3 lignes de code mineures, et je ne comprends donc pas cette erreur "out of memory".

vagrant@dev:/vagrant/workspace$ echo $MAVEN_OPTS
-Xms1024m -Xmx3000m -Dmaven.surefire.debug=-Xmx3000m

EDIT : J'ai essayé le commentaire du poster en changeant le pom.xml de mon module en échec. Mais j'ai eu la même erreur de construction maven.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.5</source>
            <target>1.5</target>
            <fork>true</fork>
            <meminitial>1024m</meminitial>
            <maxmem>2024m</maxmem>
       </configuration>
    </plugin>

1 votes

Pourriez-vous fournir plus de traces de la pile ? Je suis curieux de voir ce qui peut causer une initialisation de String à manquer de mémoire. Définir la taille du tas dans MAVEN_OPTS semble être la solution, mais je pense qu'il y a quelque part une chaîne de caractères ridiculement grande pour laquelle vous n'allouez pas assez de mémoire. -Xmx .

0voto

colinbes Points 61

L'utilisation de .mvn/jvm.config a fonctionné pour moi et présente l'avantage supplémentaire d'être lié au projet.

0voto

zhrist Points 1

Cela se produit dans les grands projets sous Windows lorsque cygwin ou un autre émulateur linux est utilisé (git bash). Par une certaine coïncidence, les deux ne fonctionnent pas sur mon projet, qui est un grand projet open source. Dans un sh script, un couple de commandes mvn est appelé. La taille de la mémoire augmente jusqu'à atteindre une taille de tas supérieure à celle spécifiée dans Xmx et, la plupart du temps, un deuxième processus Windows est lancé. Cela rend la consommation de mémoire encore plus élevée.

La solution dans ce cas est d'utiliser le fichier batch et de réduire la taille de Xmx et alors les opérations maven sont réussies. Si vous êtes intéressés, je peux vous donner plus de détails.

0voto

Nidhi Points 1

L'augmentation de la taille de la mémoire dans la variable d'environnement "MAVEN_OPTS" aidera à résoudre ce problème. Pour moi, passer de -Xmx756M à -Xmx1024M a fonctionné.

0voto

Il faut aussi installer les fichiers jar pour que build puisse économiser de la mémoire en récupérant les jars locaux.

La commande ci-dessous fonctionne pour moi après avoir essayé toutes ces variables d'environnement "MAVEN_OPTS".

Exécutez "mvn clean install -U" sur le terminal à partir du dossier racine du projet.

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