Настройка пространства кучи Java под Maven 2 в Windows
Я получаю это сообщение во время сборки моего проекта
java.lang.OutOfMemoryError: куча Java пространство
Как увеличить пространство кучи, у меня 8Gb или RAM, что невозможно, что maven так сильно поглотил, я нашел это http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the-java-heap-memory-for-maven-2-on-linux/ как это сделать на linux, но я на windows 7. Как я могу изменить пространство кучи java под окнами?
Ответы
Ответ 1
Переменная окружения для установки - MAVEN_OPTS
, например MAVEN_OPTS=-Xmx1024m
. Конфигурация maxmem
в pom применяется только тогда, когда вы устанавливаете плагин компилятора в fork javac
в новую JVM. В противном случае плагин запускается внутри той же виртуальной машины, что и Maven, и, таким образом, в памяти, переданной в командной строке через MAVEN_OPTS
.
Чтобы установить MAVEN_OPTS под Windows 7:
- Щелкните правой кнопкой мыши на моем компьютере и выберите Свойства (сочетание клавиш нажмите Windows + Pause/Break)
- Щелкните ссылку Расширенные системные настройки, расположенную в левой навигационной панели свойств системы, чтобы отобразить Расширенные системные свойства
- Перейдите на вкладку Дополнительно и нажмите кнопку Переменные среды, расположенные в нижней части Расширенных свойств системы. > окно конфигурации
- Создайте пользовательскую переменную Новая, установите Имя переменной в MAVEN_OPTS и установите Значение переменной на
-Xmx1024m
(или более)
Откройте новое командное окно и запустите mvn
.
Ответ 2
Если во время проверки работоспособности (или отказоустойчивости) у вас заканчивается пустое пространство JUnit, изменение MAVEN_OPTS может не помочь вам. Я продолжал пробовать разные конфигурации в MAVEN_OPTS без везения, пока не нашел этот пост, который исправил проблему.
В основном JKnits fork отключается в своей среде и игнорирует настройки в MAVEN_OPTS. Вам нужно настроить surefire в своем pom, чтобы добавить больше памяти для JUnits.
Надеюсь, это может спасти кого-то еще некоторое время!
Изменить: копировать решение из блог Keith Chapman на случай, если ссылка сломается:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>-Xms256m -Xmx512m</argLine>
<testFailureIgnore>false</testFailureIgnore>
<skip>false</skip>
<includes>
<include>**/*IntegrationTestSuite.java</include>
</includes>
</configuration>
</plugin>
Обновление (5/31/2017):
Благодаря @johnstosh, чтобы указать на это - верность немного изменилась с тех пор, как я поставил этот ответ там. Вот ссылка на их документация и обновленный образец кода (строка arg все еще важна для этого вопроса):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
<workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
</configuration>
</plugin>
Ответ 3
Это должна быть та же самая команда, кроме SET вместо EXPORT
- set MAVEN_OPTS = -Xmx512m даст ему 512 Мб кучи
- set MAVEN_OPTS = -Xmx2048m даст ему 2Gb кучи
Ответ 4
На Mac:
Вместо JAVA_OPTS
и MAVEN_OPTS
вместо этого используйте _JAVA_OPTIONS. Это работает!
Ответ 5
После попытки использовать переменную MAVEN_OPTS без везения, я столкнулся с этим сайтом, который работал у меня. Так что все, что мне нужно было сделать, это добавить -Xms128m -Xmx1024m к параметрам VM по умолчанию, и это сработало.
Чтобы изменить настройки в Eclipse, перейдите в Window → Preferences → Java → Установленные JRE. Выберите отмеченный JRE/JDK и нажмите "Изменить".
Ответ 6
Это сработало -
Чтобы изменить в Eclipse, перейдите в Окно → Настройки → Java → Установленные JRE. Выберите отмеченный JRE/JDK и нажмите "Изменить".
Аргументы VM по умолчанию = -Xms128m -Xmx1024m
Ответ 7
В окнах:
Добавьте переменную окружения (как в системных, так и в пользовательских переменных, у меня есть какая-то странная проблема, что она получает var из разных мест, поэтому я добавляю их в оба из них).
Назовите его MAVEN_OPTS.
Значение будет: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
Числа могут быть разными, сделать их относительно вашего размера памяти.
У меня была эта проблема, и это исправило это, больше ничего!
Ответ 8
Вы ищете 2 варианта java
:
- -Xmx максимальный размер кучи
- -Xms начальный размер кучи
Поместите их в вызове командной строки исполняемого файла java
, например:
java -Xms512M -Xmx1024M my.package.MainClass
Имейте в виду, что вы можете захотеть, чтобы начальные и максимальные размеры кучи были одинаковыми, в зависимости от приложения, поскольку он позволяет избежать изменения размера кучи во время выполнения (что может занять время в приложениях, которые требуют отклика). Изменение размера кучи может повлечь за собой перемещение множества объектов и повторную бухгалтерию.
Для ежедневных проектов сделайте их так, как вы считаете, достаточно хорошими. Профиль для справки.