Error:java.lang.OutOfMemoryError: GC overhead limit exceeded Android Studio

Error:java.lang.OutOfMemoryError: GC overhead limit exceeded Android Studio

我使用的台式机非常好,配置非常好,8 GB 内存,还有很多免费 space。

虽然 运行在我的设备 android studio 中安装应用程序一直给我这个错误,

Error:java.lang.OutOfMemoryError: GC overhead limit exceeded

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException

我的studio64.exe.vmoptions文件

-Xms256m

-Xmx1024m

-XX:MaxPermSize=350m

-XX:ReservedCodeCacheSize=240m

-XX:+UseConcMarkSweepGC

-XX:SoftRefLRUPolicyMSPerMB=50

-da

-Djna.nosys=true

-Djna.boot.library.path=

-Djna.debug_load=true

-Djna.debug_load.jna=true

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-Didea.paths.selector=AndroidStudio2.2

-Didea.platform.prefix=AndroidStudio

-Didea.jre.check=true

请告诉我..我也禁用了即时 运行 功能。

只需将以下行添加到您的 build.gradle 文件中。

dexOptions {
        javaMaxHeapSize "4g"
 }

希望对您有所帮助。

选择 CMS 垃圾收集对 JVM 的 JVM 维度有不良影响 "New Space"。如果 space 太小,那么你会经常看到(年轻一代)GC,这可能会导致你的问题。

例如,

/usr/bin/java -Xms4096m -Xmx4096m -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -version

报告只有 160 MB 的 "New space",尽管总堆大小为 4 GB。这是在使用 JVM 1.7.0_75.

的 2 核心系统上(数量随着核心数量的增加而增加)

您应该使用类似的命令检查结果是什么——查找行par new generation total ...K。如果数字看起来很低,那么这就是问题的根本原因。

然后您可以通过添加选项 -XX:NewRatio=2 -XX:NewSize=512m 来解决这个问题,这将明确...

  • 将 "New space" 上 上限 的标准尺寸规则应用到可用堆的三分之一 space
  • 最小值 "New space" 大小设置为 512 米

一般来说,您在调整 GC 设置时应该非常小心,例如添加 -XX:+UseConcMarkSweepGC -- 如果没有该选项,错误的维度将不会首先出现。