1

我正在关注我的 Web 应用程序,它由多个项目组成,即大约 23 个项目,其中一些是 Java 项目,一些是动态 Web 项目。当我从 RAD 制作 EAR 时,它会成功生成,但是当我尝试从 MAVEN 制作 EAR 时,它会抛出堆大小问题。当我将POM.xml 中的项目数量从 23 个减少到 12 个时,EAR 成功生成,但增加项目数量会带来相同的堆大小错误。

如果我设置环境变量MAVEN_OPTS = -Xmx1024M,它就不起作用。我的 PC RAM 是 2 GB,当我尝试设置时MAVEN_OPTS = -Xmx2048M,它会抛出错误,因为它无法为 JVM 保留这么多空间。

我有 jdk 1.7 和 maven 3。

请建议。

4

2 回答 2

4

我们的多模块项目也有同样的问题。编译器或编译器插件似乎存在内存泄漏。因此,当 Maven 开始构建 EAR 时,它也会消耗太多内存来构建 EAR 项目。但是,您可以建议编译器在单独的进程中运行,这样就不会发生此问题(请参阅Maven 文档):

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <fork>true</fork>
    </configuration>
  </plugin>
</plugins>
于 2012-07-23T11:47:02.720 回答
3

建议:

  • 买一台内存更大的机器。
  • 在运行构建之前关闭您的 IDE。
  • 尝试将堆大小增加到1Gb 和 2Gb之间的某个数字。
  • install尝试使用目标以正确的顺序一次构建一个组件项目。(问题可能是由于 Maven 在构建单个项目之间在内存中保留了太多东西。)

还值得研究为什么它不能分配 2Gb 的堆空间。这可能是交换空间的问题,或者可能是可以解决的 32 位 Windows 2Gb 限制。

而罗兰的想法也不错。

于 2012-07-23T11:41:58.180 回答