На сегодняшний день моя компиляция maven не работает.
[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)
[ОШИБКА] Недостаточно памяти; для увеличения объема памяти используйте флаг -Xmx при запуске (java -Xmx128M ...)
По состоянию на вчерашний день я успешно выполнил компиляцию maven.
На сегодняшний день я просто увеличил свою кучу до 3 ГБ . Кроме того, я изменил только 2-3 второстепенных строки кода, поэтому я не понимаю эту ошибку «нехватки памяти».
vagrant@dev:/vagrant/workspace$ echo $MAVEN_OPTS
-Xms1024m -Xmx3000m -Dmaven.surefire.debug=-Xmx3000m
РЕДАКТИРОВАТЬ: Я попробовал комментарий постера, изменив pom.xml моего неудачного модуля. Но у меня такая же ошибка сборки 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>
maven
out-of-memory
maven-3
pom.xml
maven-compiler-plugin
Кевин Мередит
источник
источник
-Xmx
.Ответы:
О каком «веб-модуле» вы говорите? Это простая война и война упаковочного типа?
Если вы не используете веб-инструментарий Google (GWT), вам не нужно предоставлять никаких
gwt.extraJvmArgs
Разветвление процесса компиляции может быть не лучшей идеей, потому что он запускает второй процесс, который
MAVEN_OPTS
полностью игнорирует , что затрудняет анализ.Поэтому я бы попытался увеличить Xmx, установив MAVEN_OPTS
И не создавайте вилку компилятора для другого процесса
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin>
Увеличение
-XX:MaxPermSize=512m
не требуется, потому что, если размер завивки является причиной проблемы, я бы ожидал ошибкиjava.lang.OutOfMemoryError: PermGen space
Если это не решит вашу проблему, вы можете создать дампы кучи для дальнейшего анализа, добавив
-XX:+HeapDumpOnOutOfMemoryError
. Кроме того, вы можете использовать jconsole.exe в каталоге java bin, чтобы подключиться к jvm во время компиляции и посмотреть, что происходит внутри кучи jvm.Еще одна идея (может быть, глупая), которая пришла мне в голову, достаточно ли у вас оперативной памяти внутри вашей машины? Определение размера памяти - это хорошо, но если ваш хост имеет только 4 ГБ, и тогда у вас может быть проблема, что Java не может использовать определенную память, потому что она уже используется ОС, Java, MS-Office ...
источник
Отвечая поздно, чтобы упомянуть еще один вариант, а не общую
MAVEN_OPTS
переменную среды, чтобы передать сборке Maven необходимые параметры JVM.Начиная с Maven 3.3.1 , у вас может быть
.mvn
папка как часть соответствующего проекта иjvm.config
файл как идеальное место для такой опции.Как часть официальных примечаний к выпуску
Основным преимуществом этого подхода является то, что конфигурация изолирована от соответствующего проекта и применяется ко всей сборке, и менее хрупкая, чем
MAVEN_OPTS
для других разработчиков, работающих над тем же проектом (забывая настроить ее).Более того, в случае многомодульного проекта опции будут применены ко всем модулям.
источник
У меня такая же проблема при попытке скомпилировать "чистую установку" с использованием Lowend 512 МБ RAM VPS и хорошего процессора. Повторно запустите OutOfMemory и убейте скрипт.
Использовал
export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=350m"
и работал.По-прежнему возникает другая ошибка компиляции, потому что мне впервые нужен Maven, но проблема OutOfMemory исчезла.
источник
Добавить вариант
в MAVEN_OPTS
maven-compiler-plugin
параметры<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <fork>true</fork> <meminitial>1024m</meminitial> <maxmem>2024m</maxmem> </configuration> </plugin>
источник
maven-compilier-plugin
и увеличить-XX:MaxPermSize
,Xmx
должно быть =XX:MaxPermSize
maven-compilier-plugin
У меня такая же проблема при компиляции Druid.io, увеличение MaxDirectMemorySize наконец-то сработало.
источник
Эта конфигурация ниже работает в моем случае
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <verbose>true</verbose> <fork>true</fork> <argLine>-XX:MaxPermSize=500M</argLine> </configuration> </plugin>
Попробуйте использовать -XX: MaxPermSize вместо -XX: MaxPermGen
источник
источник
На какой ОС вы работаете?
Чтобы назначить более 2 ГБ оперативной памяти, это должна быть как минимум 64-битная ОС.
Тогда возникает еще одна проблема. Даже если ваша ОС имеет неограниченную оперативную память, но она фрагментирована таким образом, что не доступен ни один свободный блок размером 2 ГБ, вы также получите исключения из памяти. И имейте в виду, что обычная память Heap - это только часть памяти, которую использует процесс виртуальной машины. Таким образом, на 32-битной машине вы, вероятно, никогда не сможете установить Xmx на 2048 МБ.
Я также предлагаю установить min max memory на то же значение, потому что в этом случае, как только у виртуальной машины заканчивается память, с самого начала выделяется 1 ГБ, затем виртуальная машина выделяет новый блок (при условии, что он увеличивается с Блоки 500 МБ) из 1,5 ГБ после этого будет скопирован весь материал из блока 1 в новый и освободит память после этого. Если ему снова не хватает памяти, выделяются 2 ГБ, а затем копируются 1,5 ГБ, временно выделяя 3,5 ГБ памяти.
источник
При сборке проекта на платформе Unix / Linux установите синтаксис параметров Maven, как показано ниже. Обратите внимание на знаки одиночной qoutation, а не двойной qoutation.
источник
Использование .mvn / jvm.config у меня сработало, плюс есть дополнительное преимущество, связанное с проектом.
источник
Это происходит в больших проектах в Windows, когда используется cygwin или другой эмулятор Linux (git bash). По некоторому совпадению, оба они не работают над моим проектом, а это большой проект с открытым исходным кодом. В сценарии sh вызывается пара команд mvn. Размер памяти увеличивается до размера кучи, большего, чем указано в Xmx, и большую часть времени в случае запуска второго процесса Windows. Это делает потребление памяти еще выше.
Решение в этом случае - использовать командный файл и уменьшить размер Xmx, и тогда операции maven будут успешными. Если есть интерес, могу подробнее рассказать.
источник
Кто-то уже упоминал о проблеме с 32-битной ОС. В моем случае проблема заключалась в том, что я компилировал 32-битный JDK.
источник
Увеличение размера памяти в переменной среды «MAVEN_OPTS» поможет решить эту проблему. Для меня сработало увеличение с -Xmx756M до -Xmx1024M.
источник