【问题标题】:Getting Error:java.lang.OutOfMemoryError: GC overhead limit exceeded出现错误:java.lang.OutOfMemoryError:超出 GC 开销限制
【发布时间】:2016-06-17 10:23:08
【问题描述】:

我收到错误:UNEXPECTED TOP-LEVEL。日志显示增加堆大小。我在应用程序中添加了 android:largeHeap = true 。然后我也收到此错误。

清单:

  <application
    android:allowBackup="true"
    android:name="android.support.multidex.MultiDexApplication"
    android:icon="@drawable/icon1"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

日志:

To run dex in process, the Gradle daemon needs a larger heap.
It currently has approximately 910 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB.
To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html
Error:UNEXPECTED TOP-LEVEL ERROR:
Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
Error:  at java.util.Arrays.copyOf(Arrays.java:3236)
Error:  at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:191)
Error:  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:279)
Error:  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
Error:  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
Error:  at com.android.dx.command.dexer.Main.processOne(Main.java:672)
Error:  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:569)
Error:  at com.android.dx.command.dexer.Main.runMultiDex(Main.java:366)
Error:  at com.android.dx.command.dexer.Main.run(Main.java:275)
Error:  at com.android.dx.command.dexer.Main.main(Main.java:245)
Error:  at com.android.dx.command.Main.main(Main.java:106)
:app:transformClassesWithDexForDebug FAILED
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 3
Information:BUILD FAILED
Information:Total time: 7 mins 31.106 secs
Information:14 errors
Information:0 warnings
Information:See complete output in console

怎么办?

【问题讨论】:

  • 你想做什么?
  • 在应用程序中添加了 android:largeHeap = true ...用于解决编译/构建时间 OOME ...绝妙的主意 ...
  • 尽量避免使用 largeHeap 选项。这可能会让您付出难以察觉的性能下降和糟糕的用户体验。
  • 努力让你@Selvin
  • 我怎样才能摆脱这个错误? @BOUTERBIATOualid

标签: java android garbage-collection heap-memory


【解决方案1】:

日志说

"为此在项目中设置org.gradle.jvmargs=-Xmx2048M gradle.properties。”

所以打开你的 gradle.properties 文件并添加行“org.gradle.jvmargs=-Xmx2048M”

【讨论】:

    【解决方案2】:

    在你的build.gradle 尝试添加这个:

    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
    
    • incremental true 用于加快构建速度。
    • javaMaxHeapSize "4g" 指定 dex 进程的堆大小。

    【讨论】:

    • 此选项已弃用。截至目前,Android Studio 3.0.1 显示警告但准备构建。
    【解决方案3】:

    你的日志:

    为此在项目中设置 org.gradle.jvmargs=-Xmx2048M gradle.properties

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2020-09-08
      相关资源
      最近更新 更多