微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用maven jvmArg解决“超出GC开销限制”的问题?

运行类时,我有以下异常:

Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded

我试图从类包的maven pom.xml中增加jvmArg堆大小:

http://maven.apache.org/xsd/maven-4.0.0.xsd\”\u0026gt;
    4.0.0

<parent>
    (...)
</parent>


<artifactId>(...)</artifactId>
<name>(...)</name>

<properties>
    <javaOpts.Xmx>4g</javaOpts.Xmx> <!-- default that can be adjusted on the command line with -DjavaOpts.Xmx=... -->
    <(...).basedir>${project.basedir}/..</(...).basedir>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <configuration>
                <launchers>
                    <launcher>
                        <id>MyClassName</id>
                        <mainClass>(...)</mainClass>
                        <jvmArgs>
                            <jvmArg>-Xmx${javaOpts.Xmx}</jvmArg>
                        (...) 

我已经尝试了最后引用的行,其中包含许多值:

>< jvmArg> -Xmx512m {javaOpts.Xmx}< / jvmArg>
>< jvmArg> -Xmx4096M {javaOpts.Xmx}< / jvmArg>
> ……
>< jvmArg> -Xmx10000000000M {javaOpts.Xmx}< / jvmArg>

但对于他们所有人我都有同样的错误.

有人可以帮帮我吗?
观察:我正在从IntelliJ IDEA运行.

解决方法:

Java 7

这不是Maven问题,您需要为VM提供更多内存.您可以通过环境变量执行此操作,Maven Launcher将在加载时自动获取这些设置,并使用它们来配置底层Java VM.

这样做的简单方法是:

export MAVEN_OPTS =“ – Xmx1024M -Xss128M -XX:MaxPermSize = 1024M -XX:CMSClassUnloadingEnabled”

视窗:

设置MAVEN_OPTS = -Xmx1024M -Xss128M -XX:MaxPermSize = 1024M -XX:CMSClassUnloadingEnabled

(没有双引号)

Java 8

Java 8用元空间替换了永久代,新设置如下所示:

export MAVEN_OPTS =“ – Xmx1024M -Xss128M -XX:MetaspaceSize = 512M -XX:MaxMetaspaceSize = 1024M -XX:CMSClassUnloadingEnabled”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐