java - 如何使用 maven jvmArg 解决 "GC overhead limit exceeded"?

标签 java scala maven garbage-collection out-of-memory

运行类(class)时出现以下异常:

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

window :

设置 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"

关于java - 如何使用 maven jvmArg 解决 "GC overhead limit exceeded"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770487/

相关文章:

java - 如何使用 IntelliJ 解决 Scala 中的异常?

scala - 是否可以扩展 Scala 编译器来推断递归方法的返回类型?

java - 无法解析 Maven 项目中的 Spring Security 类

Maven 版本候选版本和快照

java - 如何在build.gradle中指定 "pig-0.13.0-h2.jar"依赖?

java - 通过位移来读/写数据

java - Spring Boot如何将ArrayList转换为Pageable对象

java - 在带有 Maven 的 Java 项目中使用 AsyncHttpClient

java watch 使用麦克风录制音频的进程

scala - Spark ML VectorAssembler 返回奇怪的输出