2016-09-07 118 views
0

我正在使用非常好的配置8 GB ram和大量可用空間的臺式機。錯誤:java.lang.OutOfMemoryError:超出GC開銷限制Android Studio

,同時運行在我的設備的Android工作室的應用程序是給我這個錯誤的時候,

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 

請讓我知道。我也禁用了即時運行功能。

+0

將-Xmx設置從-Xmx1024m更改爲更高的值(例如-Xmx2048m)。 -Xmx指定內存分配池的最大大小(以字節爲單位)。 –

+0

[Error java.lang.OutOfMemoryError:超出GC開銷限制]的可能重複(http://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded) –

回答

1

只需將以下幾行添加到您的build.gradle文件中即可。

dexOptions { 
     javaMaxHeapSize "4g" 
} 

我希望這會幫助你。

0

選擇CMS垃圾回收對JVM的「新空間」的尺寸標註有不良影響。如果這個空間太小,那麼你會經常看到(年輕一代)GC,這可能會導致你的問題。

例如,

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

報告僅有160 MB的 「新空間」,儘管一共有4 GB堆大小。這是使用JVM 1.7.0_75在2核心系統上(數量隨着核心數量的增加而增加)。

您應該檢查使用類似的命令查看結果是什麼 - 查找行par new generation total ...K。如果數字顯得非常低,那麼這就是問題的根源。

然後,您可以通過添加選項解決這個-XX:NewRatio=2 -XX:NewSize=512m,這將明確...

  • 「新空間」應用的標準dimensionsing規則來進行上限到的三分之一可用堆空間
  • 設置最低 「新空間」 的大小到512M

我一般情況下,您應該非常小心地調整GC設置,例如,添加-XX:+UseConcMarkSweepGC - 如果沒有該選項,不好的尺寸標註不會出現在第一位。

相關問題