Настройка пространства кучи 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

Имейте в виду, что вы можете захотеть, чтобы начальные и максимальные размеры кучи были одинаковыми, в зависимости от приложения, поскольку он позволяет избежать изменения размера кучи во время выполнения (что может занять время в приложениях, которые требуют отклика). Изменение размера кучи может повлечь за собой перемещение множества объектов и повторную бухгалтерию.

Для ежедневных проектов сделайте их так, как вы считаете, достаточно хорошими. Профиль для справки.