顶级异常:已达到 GC 开销限制。 Android Maven 构建

Top level exception: GC Overhead limit reached. Android Maven build

当使用 Maven 构建 Android 应用程序时,我间歇性地收到意外的顶级异常:达到 GC 开销限制或有时 Java 超出堆 space。

此问题仅在我升级到 Windows 10 后才开始出现(从 windows 8 开始,在 windows 8 上正常工作)。该项目在大约 20 台其他机器(运行 不同版本的 MacOS、Linux、Windows 等)上构建良好,仅在我的机器上中断

我试过将 MAVEN_OPTS -Xmx env 变量设置为 2048m 4096m 1024m 或只是将其保留,但这并没有什么不同。我也曾尝试关闭 GC 开销限制检查,但它也没有用

当构建的 dex 部分发生时会出现此问题,并且只有大约一半的时间会发生。基本上有一半时间它构建良好,另一半时间它崩溃,要么达到 GC 开销限制,要么 Java 超出堆。

我正在使用Javajdk1.8.0_101

Apache Maven 3.3.9

如能提供解决此问题的任何帮助,我们将不胜感激

编辑

我 运行 探查器并最终导致它失败:

未捕获 t运行slation 错误:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:超出 GC 开销限制

分析器的屏幕截图:

我不确定是什么原因导致 dex 进程出现这种情况,因为在我看来它有点挂起一段时间,然后 GC 突然开始超速运行

在 android maven 插件配置下将其添加到我的 POM 中解决了我的问题

<dex>
    <jvmArguments>
      <jvmArgument>-Xms2048m</jvmArgument>
      <jvmArgument>-Xmx4096m</jvmArgument>
    </jvmArguments>
</dex>

我能想到的最好的解释

好的,所以在查看所有内容后似乎是内存问题。 dex 进程被分配了 1.6 Gb 的 JVM 内存,这有时足够了,但在某些情况下,无论出于何种原因,它需要的内存稍多一些。我最好的猜测是,这导致它尝试 运行 GC 释放内存,从而导致达到 GC 开销限制。在其他情况下,它只会抛出 Out of heap space 错误。不管给 Dex 进程大量内存都解决了我的问题。在旁注上。我之前从未遇到过这个问题 windows 10 使用相同的配置构建相同的项目