【问题标题】:Maven: OutofMemoryError followed by Could not create the Java virtual machineMaven:OutofMemoryError 后跟无法创建 Java 虚拟机
【发布时间】:2012-07-27 11:51:00
【问题描述】:

我正在尝试将 maven 用于我的项目工作,但我遇到了与内存相关的问题。

当我运行 maven 时,我得到了我使用以下行修复的堆空间错误

set MAVEN_OPTS="-Xmx1586m"

之后,当我再次运行 maven 时,我没有收到堆空间错误,而是收到 PermGen 空间错误。为了解决这个问题,我使用了以下语法

set MAVEN_OPTS="-Xmx1586m -XX:MaxPermSize=512m"

但是一旦我开始使用 MaxPermSize 选项,我会收到以下错误

最大堆大小无效:-Xmx1586m -XX:MaxPermSize=512m

无法创建 Java 虚拟机。

我尝试为 Xmx 和 MaxPermSize 设置不同的值组合来控制大小,但所有这些都无效。

仅当我将 MaxPermSize 选项放入 MAVEN_OPTS 时,我才会收到此错误。删除该选项后,我不会收到上述错误,但确实会收到 PermGen 错误。

任何建议我做错了什么?

【问题讨论】:

    标签: java maven maven-2 out-of-memory


    【解决方案1】:

    问题是java没有理解你的命令行选项。消息:

    Invalid maximum heap size: -Xmx1586m -XX:MaxPermSize=512m
    

    告诉你java已经使用了整个字符串“-Xmx1586m -XX:MaxPermSize=512m”来尝试设置最大堆大小。

    我的猜测是您需要在不使用引号的情况下设置环境变量。试试:

    set MAVEN_OPTS=-XMx1586m -XX:MaxPermSize=512m
    

    【讨论】:

    • “不用引号”救救我!
    【解决方案2】:

    您可以尝试将初始堆大小和初始 permgen 大小设置为相对较小,但通过 -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m 设置适当的最大堆和 pergent

    也不要将 permgen 设置为 512 - 这对于典型的场景来说太多了。

    您可能还想在 maven 中使用 fork 选项,并在不同的 JVM 中启动插件执行。

    例如

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <fork>true</fork>
        </configuration>
      </plugin>
    

    此外,在分配内存时,还要确保您有足够的可用内存。

    【讨论】:

      【解决方案3】:

      我猜你在 32 位操作系统上有一个 32 位 JVM,你不能创建一个那么大的应用程序。尝试使用更少的内存或在 64 位操作系统上使用 64 位 JVM。

      【讨论】:

      • 并检查您的内存使用情况。如果没有空闲内存,这无论如何都帮不了你
      • @ChristianLendel 我检查了内存,并在释放大量内存后尝试了相同的方法,但无济于事。
      • @Peter 即使我使用 32 位组合,我也尝试只使用 2GB 的内存,这对于 32 位组合也应该没问题。你在哪里看到这个问题。可能是我错过了一些东西。请记住,我有足够的可用内存
      • 在 Windows 上,您只能分配 1.2 到 1.5 GB 的堆,具体取决于您的操作系统版本。这是操作系统的限制。
      • stackoverflow.com/questions/1434779/… 也许这会对你有所帮助
      【解决方案4】:

      会不会只是大小写问题?你有:

      set MAVEN_OPTS="-XMx1586m -XX:MaxPermSize=512m"
      

      什么时候你应该有(注意小写的“m”):

      set MAVEN_OPTS="-Xmx1586m -XX:MaxPermSize=512m"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-14
        • 2017-05-30
        • 1970-01-01
        • 2022-07-01
        相关资源
        最近更新 更多