错误:java.lang.OutOfMemoryError:GC开销限制超出了Android Studio

时间:2016-09-07 06:28:36

标签: android android-studio garbage-collection out-of-memory

我正在使用一台非常好的台式机,配置非常好,8 GB内存,也有很多可用空间。

在我的设备中运行应用程序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

my 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

请让我知道..我也禁用了即时运行功能。

2 个答案:

答案 0 :(得分:1)

只需在build.gradle文件中添加以下行。

dexOptions {
        javaMaxHeapSize "4g"
 }

我希望这会对你有所帮助。

答案 1 :(得分:0)

选择 CMS垃圾收集会对JVM的JVM“新空间”的维度产生不利影响。如果那个空间太小,那么你会经常看到(年轻一代)GC,这可能会导致你的问题。

,例如,

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

报告只有160 MB的“新空间”,尽管堆总大小为4 GB。这是在一个2核系统上(数量随核心数增加),使用JVM 1.7.0_75。

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

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

  • 将“新空间”上上限的标准尺寸标注规则应用于可用堆空间的三分之一
  • 最小“新空间”大小设置为512米

一般情况下,您应该非常小心地调整GC设置,例如添加-XX:+UseConcMarkSweepGC - 如果没有该选项,则不会出现错误的尺寸标注。