【问题标题】:How to solve java.lang.OutOfMemoryError: GC overhead limit exceeded error in android studio如何解决 java.lang.OutOfMemoryError: GC 开销限制超出 android studio 中的错误
【发布时间】:2014-11-27 06:34:56
【问题描述】:

我在 64 位 Linux 上使用 android studio 1.0 RC

当我运行我的应用程序时,我得到了

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

当我搜索如何解决这个错误时,我得到了像添加这样的解决方案:

  • -XX:-UseGCOverheadLimit to studio.vmoptions 或 studio64.vmoptions
  • -Xmx2000m 到 studio.vmoptions 或 studio64.vmoptions 等。

这些对我不起作用。

请帮忙。提前致谢

【问题讨论】:

  • 我通过在 build.gradle 文件的 android 闭包中添加 dexOptions { incremental true javaMaxHeapSize "4g" } 解决了这个问题。在groups.google.com/forum/#!topic/adt-dev/r4p-sBLl7DQ 中找到了这个答案
  • 这可能是由于 IDE 插件,或者可能是 gradle 任务中的某些东西。我在使用旧版本的 CodeGlance(现已修复)时遇到了这个问题

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


【解决方案1】:

我通过添加解决了这个问题

dexOptions { 
          incremental true 
          javaMaxHeapSize "4g" 
} 

到 build.gradle 文件中的 android 闭包。 在

中找到了这个答案

OutOfMemoryError: GC overhead limit exceeded

【讨论】:

    【解决方案2】:

    将此添加到您的“gradle.properties”文件中:

    org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError
    

    另外,请阅读this article。通过添加这些组合,您也许可以使构建速度更快:

    org.gradle.daemon=true
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    

    编辑:根据我的经验更新的答案:

    在 Android Studio 上,选择 Help -> Edit custom VM options ,然后设置 IDE 允许使用的最大内存。例如,如果您想要 5GB,请使用:

    -Xmx5g
    

    保存文件,关闭 IDE 的所有窗口(确保没有进程),然后重新启动 IDE。


    编辑:Android Studio 现在在其设置中具有 RAM 配置。转到“帮助”->“更改内存设置”。

    【讨论】:

    • 没有帮助我:/
    • @stevemoretz 现在更新了答案。请尝试一下。
    • @androiddeveloper 谢谢人看起来工作到现在。 :)
    • @stevemoretz 很高兴为您提供帮助 :)
    • @androiddeveloper 在 3 次构建后再次发生。 IDE 使用 1.3 gb,openjdk 使用 0.5gb,我给了它们最大 4GB。
    【解决方案3】:

    找到内存设置

    1. Cmd + Shift + A 在 Mac 上(Ctrl + Shift + A 在 Windows 上)或点击帮助
    2. 键入“内存设置”

    Preferences/Settings 下,将 IDE Heap Size 和/或 Daemon Heap Size 增加到您的满意

    【讨论】:

      【解决方案4】:

      我也有同样的问题 - 我的原因不同。我正在备份一些文件,不小心在资源文件夹中丢失了一个大文件。它接近 40MB。

      删除此文件后,错误就消失了。

      【讨论】:

        【解决方案5】:

        将此行添加到您的build.gradle

        dexOptions
                 {
                       incremental false
                       javaMaxHeapSize "2048M" 
                       preDexLibraries = false
                 }
        

        【讨论】:

        • preDexLibraries 有什么作用?
        【解决方案6】:

        我也有这个问题 我的解决办法是: 只需修改项目根目录中的gradle.properties

        org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
        

        default jvmargs is 256当你编译很多频道apk时会导致这个问题!

        【讨论】:

          【解决方案7】:

          对于 Android 项目,您使用 gradle 插件,位于根 build.gradle.kts:

          buildscript {
              repositories {
                  google()
                  jcenter()
              }
              dependencies {
                  classpath("com.android.tools.build:gradle:${gradle_plugin_version}")
              }
          }
          

          将 gradle_plugin_version 升级到最新版本。

          原因是最新的 Gradle 版本应该与最新的 Gradle 插件版本一起使用。

          例如,对于 Gradle 6.3,您应该使用 gradle-plugin 4.0.1:

          distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
          
          buildscript {
              repositories {
                  google()
                  jcenter()
              }
              dependencies {
                  classpath("com.android.tools.build:gradle:4.0.1")
              }
          }
          

          【讨论】:

            【解决方案8】:

            如果您使用的是IntelllijIdea,请从主菜单中选择Help |更改内存设置

            设置您要分配的必要内存量,然后单击保存并重新启动。

            此操作会更改 JVM 使用的 -Xmx 选项的值,并使用新设置重新启动 IntelliJ IDEA。

            【讨论】:

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