OutOfMemoryError при сборке Apache Sling

Я получаю следующую ошибку при запуске сборки maven для Apache Sling даже с рекомендуемым размером кучи:

main:
     [echo] **************** WARNING (SLING-443/SLING-1782) ******************************
     [echo] On most platforms, you'll get OutOfMemoryErrors when building unless you set
     [echo] on 32bit platforms: MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=256M", see SLING-443
     [echo] on 64bit platforms: MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=512M", see SLING-1782
     [echo] ******************************************************************************
[INFO] Executed tasks
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ sling-launchpad-webapp-archetype ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/thomasf/slingDownload/sling/maven/archetypes/launchpad-webapp/src/test/resources
[INFO] Copying 3 resources
[INFO] 
[INFO] --- animal-sniffer-maven-plugin:1.7:check (default) @ sling-launchpad-webapp-archetype ---
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java15:1.0
[ERROR] Java heap space -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

Конечно же, размер моей кучи такой же, как они рекомендуют на домашней странице проекта:

echo $MAVEN_OPTS
-Xmx512M -XX:MaxPermSize=512m

Я подозреваю, что причина в том, что maven разветвляется, а jvm в дочернем процессе не имеет одинакового размера кучи, однако я не могу определить, какой плагин разветвляется из вывода консоли.

Любые идеи приветствуются !!! Спасибо


person murungu    schedule 14.11.2011    source источник


Ответы (3)


Можно попробовать просто увеличить память:

MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=512m

или установите его с помощью JAVA_OPTS (но это влияет на любой процесс JVM для исполняющего пользователя!), поэтому дочерний процесс также будет иметь эти настройки:

JAVA_OPTS=-Xmx512M -XX:MaxPermSize=512m

попробуйте сначала увеличить память с помощью MAVEN_OPTS.

С Уважением

Вернер

person wemu    schedule 15.11.2011
comment
Я уже пробовал это безрезультатно. Как я уже сказал, я подозреваю, что причина в том, что цель компиляции maven порождает другую JVM с другими настройками пространства кучи. Мне нужно выяснить, КАК и ГДЕ настроить эти параметры. Причина, по которой я подозреваю это, заключается в том, что я вижу много свободной памяти, когда сборка завершается сбоем из-за ошибки нехватки памяти. Сборка не использует часть того, что я выделяю. - person murungu; 22.11.2011

Вы можете проверить переменные среды вашего компьютера, объявлена ​​ли переменная MAVEN_OPTS или нет. Если нет Объявите это как

MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=512m

иначе, если он уже объявлен, просто увеличьте размер памяти.

Таким образом, это сработало для меня.

person Supriyo Guchait    schedule 25.11.2013

Даже если вы используете переменную среды JAVA_OPTS памяти не хватает? Поскольку это влияет на любую работающую виртуальную машину, вновь порожденный процесс также должен иметь эти настройки.

Или попробовать использовать 1200M памяти? Может быть, памяти кучи не так много, если вы запускаете 64-битную JVM, вам может просто понадобиться больше... интересный вопрос.

Я бы запустил сборку, используя -X и, возможно, это плагин/цель, которая выполняется до ошибки кучи. Надеюсь, этот плагин можно настроить.

person wemu    schedule 08.12.2011