构建Apache Sling的OutOfMemoryError

时间:2011-11-14 16:10:29

标签: maven maven-3 sling

运行Apache Sling的maven构建时出现以下错误,即使使用推荐的堆大小:

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没有相同的堆大小 - 但是我无法识别哪个插件从控制台输出分叉。

任何想法都赞赏!!!谢谢

3 个答案:

答案 0 :(得分:0)

您可以尝试增加内存:

MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=512m

或使用JAVA_OPTS设置它(但这会影响正在执行的用户的任何JVM进程!)因此子进程也将具有以下设置:

JAVA_OPTS=-Xmx512M -XX:MaxPermSize=512m

首先尝试使用MAVEN_OPTS增加内存。

问候

维尔纳

答案 1 :(得分:0)

即使您使用JAVA_OPTS环境变量,内存也不足?由于这会影响任何正在运行的vm,因此新生成的进程也应具有这些设置。

或尝试使用1200M的内存?也许没有太多堆内存丢失,如果你运行64位JVM,你可能只需要更多...有趣的问题。

我会使用-X运行构建,也许它是在堆错误之前执行的插件/目标。希望可以配置插件。

答案 2 :(得分:0)

如果声明了MAVEN_OPTS变量,您可以签入计算机的环境变量。如果不是声明为

MAVEN_OPTS=-Xmx1024M -XX:MaxPermSize=512m

否则,如果它已经声明,只是增加内存大小。

这种方式对我有用。