升级 Android 项目以使用 java 8 并超出 GC 开销限制

Upgrade Android project to use java 8 and get GC overhead limit exceeded

昨天我更改了 android 项目 gradle 文件以使用 java 8 个功能:

defaultConfig {
    ...
    jackOptions {
        enabled true
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

一切都很好。我使用了 lambda 表达式和 运行 项目。

但是今天,我不知道我的项目发生了什么(我将 master 重置为 "upgrading project to use java 8 features" 提交)。我无法构建项目。超过 5 分钟后 android 工作室在 gradle 控制台中向我显示错误:

Exception in thread "Tasks limiter_1" java.lang.OutOfMemoryError: GC overhead limit exceeded

它卡在了

:app:compileDebugJavaWithJack

我注意到创建了一个新文件 "java_pid25702.hprof",它非常大(大约 1.5 GB)。

我正在使用 Android studio 2.2,java 版本“1.8.0_51”,Mac book pro(核心 i7,16gb 内存),OS X 版本 10.11.4

我也换了我的 android 工作室 "studio.vmoptions" :

-Xms2048m
-Xmx4096m
-XX:MaxPermSize=2048m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseCompressedOops

我看到这些帖子:Error java.lang.OutOfMemoryError: GC overhead limit exceeded , 但是 none 它们对我有帮助。

我的问题是 1-为什么我的项目昨天可以正常运行,但今天却不行??! 2-我该怎么办?

经过几个小时并在其他一些系统上测试项目后,我发现我应该将 Android studio 更新为

Android Studio 2.2 stable version

同时更新:

Android Plugin version to 2.2.0
Gradle Version to 2.14.1

然后 gradle 控制台显示 gradle 堆大小低的警告,您应该通过添加来增加它:

org.gradle.jvmargs=-Xmx1536M

到项目中的 gradle.properties 文件。现在我的项目 运行 没有任何问题。