【问题标题】:Set the permgen size for the Child JVM processes that Maven will spin off设置 Maven 将剥离的子 JVM 进程的 permgen 大小
【发布时间】:2012-10-21 02:44:42
【问题描述】:

我正在 Jenkins 构建服务器上构建一个 Maven Java 应用程序。在 Jenkins 上构建期间,我多次遇到java.lang.OutOfMemoryError: PermGen space(但从未在我的本地主机上),因此它使我的构建失败。

我已经尝试为 Jenkins 设置MAVEN_OPTS:我进入了Jenkins-->Manage Jenkins-->Configure system-->Global MAVEN_OPTS,它被设置为-Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:PermSize=512m。尽管将其设置为如此高的值,但我们仍会遇到 PermGen 空间问题。我不想将 MAVEN_OPTS 设置为更高的值;我看不出我的应用程序需要多少空间,我宁愿深入研究高内存使用问题。

最近,我一直在想,permgen 空间问题可能不是来自 Maven 本身,而是来自 Maven 衍生的 JVM 进程之一(例如:插件)。我提出这个假设是因为 Maven 仍然能够正常执行 TestNG 测试,尽管已经吐出了我们的 permgen 空间错误行。 Jetty:

是导致 PermGen 错误的此类插件之一
Oct 31, 2012 7:55:37 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: handle failed
java.lang.OutOfMemoryError: PermGen space

因此,我想知道:

MAVEN_OPTS 变量是否也适用于 Maven 构建衍生的子 JVM 进程?如果没有,那我该如何为这些子进程比如Jetty设置JVM选项呢?

注意:我使用的是 Maven 3.0.4。

【问题讨论】:

    标签: java maven jenkins maven-jetty-plugin permgen


    【解决方案1】:

    大多数生成 Java 进程的 Maven 插件都有自己的方式来指定 JVM 命令行参数。例如,您可以使用 argLine 配置参数(请参阅 http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#argLine)在 Surefire 插件生成的进程中配置堆和 permgen 大小。

    Jetty 插件不会产生进程,因此 heap 和 permgen 由提供给 Maven 进程的 JVM 参数控制。

    如果您在从 Jenkins 运行时内存不足,但在本地运行时却没有,请检查 Jenkins 传递给 Maven 的 MAVEN_OPTS。

    【讨论】:

    • 我们尝试设置 argLine,但是当我们运行 mvn gae:run 时它不起作用,这是 maven-gae-plugin
    • maven-gae-plugin的源码,你试过它的jvmFlags参数吗?
    • 我最近遇到了同样的问题,所以我尝试了你关于设置 jvmFlags 参数的建议......它就像一个魅力!我的问题是我们在 maven-gae-plugin 的配置中设置了<argLine> 标签,但我们应该一直使用<jvmFlags>。谢谢!
    【解决方案2】:

    您可以全局配置 vm 选项(设置)并为任何构建作业覆盖它。例如。在基于 Maven 的作业中,MAVEN_OPTS 字段隐藏在“高级”块之一中。

    【讨论】:

      【解决方案3】:

      正如前面另一个回复所提到的,每个进程都有自己指定参数的方式。如果 Jenkins 生成了 Maven 子进程,该设置将位于 Maven 构建下的作业配置中。您需要单击“高级”按钮并在MAVEN_OPTS 字段中设置选项。例如:-XX:MaxPermSize=256m -Xms512m -Xmx1024m

      【讨论】:

        猜你喜欢
        • 2018-12-28
        • 2010-09-30
        • 1970-01-01
        • 2010-12-29
        • 2021-04-18
        • 2016-06-22
        • 2016-04-17
        • 1970-01-01
        相关资源
        最近更新 更多