我间歇性地获得了一个意外的顶级异常:在使用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过程中是什么导致了这种情况,因为在我看来它有点悬挂一段时间然后突然GC才会开始过载
答案 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构建具有相同配置的相同项目之前,我从来没有遇到过这个问题