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

时间:2016-10-14 10:55:16

标签: java android maven garbage-collection dex

我间歇性地获得了一个意外的顶级异常:在使用Maven构建Android应用程序时,达到了GC开销限制,有时甚至是Java空间。

此问题仅在我升级到Windows 10后才开始发生(从Windows 8开始,在Windows 8上没有问题)。该项目在大约20台其他机器(运行不同版本的MacOS,Linux,Windows等)上构建良好,并且仅在我的机器上中断

我已经尝试将MAVEN_OPTS -Xmx env变量设置为2048m 4096m 1024m或者只是将其保留,但它没有任何区别。我也试图关闭GC开销限制检查,但它也无法正常工作

当构建的dex部分发生并且仅发生大约一半的时间时,会发生此问题。基本上有一半的时间它构建正常,另一半时间崩溃,达到GC开销限制或Java堆出。

我使用的是Java jdk1.8.0_101

Apache Maven 3.3.9

非常感谢有关如何解决此问题的任何帮助

修改

我运行了探查器并最终失败了:

未捕获的翻译错误:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:超出GC开销限制

探查器的屏幕截图: Dex profile screenshot

我不确定在dex过程中是什么导致了这种情况,因为在我看来它有点悬挂一段时间然后突然GC才会开始过载

1 个答案:

答案 0 :(得分:0)

在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构建具有相同配置的相同项目之前,我从来没有遇到过这个问题