Настройка пространства кучи Java в Maven 2 в Windows - PullRequest
91 голосов
/ 12 мая 2010

Я получаю это сообщение во время сборки моего проекта

java.lang.OutOfMemoryError: Java heap space

Как увеличить пространство кучи, у меня есть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 под Windows?

Ответы [ 8 ]

117 голосов
/ 12 мая 2010

Переменная окружения для установки - MAVEN_OPTS, например MAVEN_OPTS=-Xmx1024m. Конфигурация maxmem в pom применяется только тогда, когда вы устанавливаете плагин компилятора для fork javac в новую JVM. В противном случае плагин работает внутри той же виртуальной машины, что и Maven, и, таким образом, в памяти, передаваемой в командной строке через MAVEN_OPTS.

Чтобы установить MAVEN_OPTS в Windows 7:

  1. Щелкните правой кнопкой мыши на Моем компьютере и выберите Свойства (сочетание клавиш Windows + Пауза / останов )
  2. Нажмите на ссылку Расширенные настройки системы , расположенную в левой части навигации Свойства системы, чтобы отобразить Расширенные свойства системы
  3. Перейдите на вкладку Дополнительно и нажмите Переменные среды , расположенную в нижней части Расширенные свойства системы окна конфигурации
  4. Создайте Новую пользовательскую переменную, установите Имя переменной на MAVEN_OPTS и установите Значение переменной на -Xmx1024m (или более)

Откройте новое командное окно и запустите mvn.

45 голосов
/ 14 сентября 2012

Если вам не хватает места в куче во время безошибочного (или отказоустойчивого) тестирования JUnit, изменение MAVEN_OPTS может вам не помочь. Я продолжал пробовать разные конфигурации в MAVEN_OPTS безуспешно, пока не нашел этот пост , который исправил проблему.

В основном JUnits разветвляются в свою среду и игнорируют настройки в MAVEN_OPTS. Вы должны настроить верный огонь в вашем pom, чтобы добавить больше памяти для JUnits.

Надеюсь, это может спасти кого-то еще!


Редактировать: Копирование решения из Блога Кейта Чепмена на случай, если однажды ссылка сломается:

<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>

Обновление (31.05.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>
21 голосов
/ 12 мая 2010

Это должна быть та же команда, кроме SET вместо EXPORT

  • set MAVEN_OPTS = -Xmx512m даст 512Mb кучи
  • set MAVEN_OPTS = -Xmx2048m даст 2 Гб кучи
9 голосов
/ 13 декабря 2012

на Mac: Вместо JAVA_OPTS и MAVEN_OPTS используйте _JAVA_OPTIONS. Это работает!

3 голосов
/ 12 июля 2013

После неудачной попытки использовать переменную MAVEN_OPTS я наткнулся на этот сайт , который работал для меня. Поэтому все, что мне нужно было сделать, это добавить -Xms128m -Xmx1024m к параметрам виртуальной машины по умолчанию, и это сработало.

Чтобы изменить их в Eclipse, перейдите в Окно -> Настройки -> Java -> Установленные JRE. Выберите отмеченный JRE / JDK и нажмите «Изменить».

0 голосов
/ 21 января 2015

На окнах:

Добавьте переменную окружения (в системных и пользовательских переменных у меня есть странная проблема: она получает переменную из разных мест, поэтому я добавляю их в обе)

Назовите его MAVEN_OPTS.

Значение будет: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled

Числа могут быть разными, сделайте их в соответствии с вашим размером памяти.

У меня была эта проблема, и это исправило ее, больше ничего!

0 голосов
/ 11 марта 2014

сработало - Для изменения в Eclipse перейдите в Window -> Preferences -> Java -> Installed JREs. Выберите отмеченный JRE / JDK и нажмите «Изменить».

Аргументы VM по умолчанию = -Xms128m -Xmx1024m

0 голосов
/ 12 мая 2010

Вы ищете 2 варианта java:

  • -Xmx максимальный размер кучи
  • -Xms начальный размер кучи

Поместите их в вызов командной строки исполняемого файла java, например:

java -Xms512M -Xmx1024M my.package.MainClass

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...