错误:java.lang.OutOfMemoryError:超出GC开销限制电报错误

错误:java.lang.OutOfMemoryError:超出GC开销限制电报错误,java,android,out-of-memory,telegram,Java,Android,Out Of Memory,Telegram,我是Android的新手,试图运行Android上提供的源代码,但我遇到了一些可怕的错误,在谷歌搜索了几天之后,我什么也没找到 我只是按照指示做的,但不起作用。error say的错误:java.lang.OutOfMemoryError:超出了GC开销限制 但是,即使在增加最大堆大小后,也会抛出相同的错误,但内存会增加 BuildVars.java: public class BuildVars { public static boolean DEBUG_VERSION = false

我是Android的新手,试图运行Android上提供的源代码,但我遇到了一些可怕的错误,在谷歌搜索了几天之后,我什么也没找到

我只是按照指示做的,但不起作用。error say的错误:java.lang.OutOfMemoryError:超出了GC开销限制 但是,即使在增加最大堆大小后,也会抛出相同的错误,但内存会增加

BuildVars.java:

public class BuildVars {
    public static boolean DEBUG_VERSION = false;
    public static int BUILD_VERSION = 821;
    public static String BUILD_VERSION_STRING = "3.10";
    public static String APP_HASH = "94706fdc9f5d86e2c3749bd8d0a2559e"; //obtain your own APP_HASH at https://core.telegram.org/api/obtaining_api_id
    public static String HOCKEY_APP_HASH = "f7a81fd2b9cd40d3a8687311defcfe88";
    public static String HOCKEY_APP_HASH_DEBUG = "f7a81fd2b9cd40d3a8687311defcfe88";
    public static String GCM_SENDER_ID = "760348033672";
    public static String SEND_LOGS_EMAIL = "ssiasoft@gmail.com";
    public static String BING_SEARCH_KEY = "afb6312cb4ed4e78b8dfd177c6d174af"; //obtain your own KEY at https://www.bing.com/dev/en-us/dev-center
    public static String FOURSQUARE_API_KEY = "HNRPHATHVHEBKXMVVLNTYXOGGUHPUSGVMB33TP2XNOFWMGGV"; //obtain your own KEY at https://developer.foursquare.com/
    public static String FOURSQUARE_API_ID = "A9ABCD"; //obtain your own API_ID at https://developer.foursquare.com/
    public static String FOURSQUARE_API_VERSION = "20150326";
}
下面是完整的错误消息日志:

:TMessagesProj:transformClasses_enhancedWithInstant+reloadDexForArmDebug UP-TO-DATE
:TMessagesProj:incrementalArmDebugTasks
:TMessagesProj:prePackageMarkerForArmDebug
:TMessagesProj:fastDeployArmDebugExtractor
:TMessagesProj:generateArmDebugInstantRunAppInfo
:TMessagesProj:transformClassesWithDexForArmDebug
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
:TMessagesProj:transformClassesWithDexForArmDebug FAILED
Error:Execution failed for task ':TMessagesProj:transformClassesWithDexForArmDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: 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_40\bin\java.exe'' finished with non-zero exit value 3
Information:BUILD FAILED
Information:Total time: 13 mins 5.264 secs
Information:3 errors
Information:0 warnings
有人知道为什么会发生这种情况,以及如何让它运行吗

我非常感谢任何有工作电报项目的人与我分享这些代码。

问题 正如日志消息中所说,Gradle需要更多内存,因为它使用进程中的Dex特性

要在进程中运行dex,Gradle守护进程需要更大的堆。 它大约有910MB。对于更快的构建,增加 Gradle守护程序的最大堆大小超过2048 MB 这将在项目中设置org.gradle.jvmargs=-Xmx2048M 格拉德尔酒店

Gradle本身是用Java编写的,与任何其他Java程序一样,它拥有的内存量受到堆大小的限制

解决方案 选项1-增加堆大小 要增加堆大小,请增加堆的最大可用量-设置JVM选项-Xmx。尝试设置2GB,如日志消息所示:-Xmx2048M。在Gradle中,通过在项目Gradle.properties中编写org.Gradle.jvmargs=-Xmx2048M来完成。此文件位于build.gradle旁边。如果没有,请手动创建一个

之后,如果错误仍然存在,请尝试显式告诉Dex-In-Process功能它现在有多少内存-将此添加到build.gradle应用程序模块。请注意,它应该小于Gradle可用的内存总量,即如果Gradle有2GB,则为进程中的索引设置1GB:

android {
 ....
 dexOptions {
    // To prevent OutOfMemory
    javaMaxHeapSize "1G"
  }
}
尝试较大的值,实际值取决于项目

选项2-关闭进程中的索引功能 尽管据说如果没有此功能,构建速度会较慢,但请尝试将其关闭

android {
    // ...
    dexOptions {
        dexInProcess = false
    }
}
问题 正如日志消息中所说,Gradle需要更多内存,因为它使用进程中的Dex特性

要在进程中运行dex,Gradle守护进程需要更大的堆。 它大约有910MB。对于更快的构建,增加 Gradle守护程序的最大堆大小超过2048 MB 这将在项目中设置org.gradle.jvmargs=-Xmx2048M 格拉德尔酒店

Gradle本身是用Java编写的,与任何其他Java程序一样,它拥有的内存量受到堆大小的限制

解决方案 选项1-增加堆大小 要增加堆大小,请增加堆的最大可用量-设置JVM选项-Xmx。尝试设置2GB,如日志消息所示:-Xmx2048M。在Gradle中,通过在项目Gradle.properties中编写org.Gradle.jvmargs=-Xmx2048M来完成。此文件位于build.gradle旁边。如果没有,请手动创建一个

之后,如果错误仍然存在,请尝试显式告诉Dex-In-Process功能它现在有多少内存-将此添加到build.gradle应用程序模块。请注意,它应该小于Gradle可用的内存总量,即如果Gradle有2GB,则为进程中的索引设置1GB:

android {
 ....
 dexOptions {
    // To prevent OutOfMemory
    javaMaxHeapSize "1G"
  }
}
尝试较大的值,实际值取决于项目

选项2-关闭进程中的索引功能 尽管据说如果没有此功能,构建速度会较慢,但请尝试将其关闭

android {
    // ...
    dexOptions {
        dexInProcess = false
    }
}

谢谢你的快速回复。我做了所有这些事都没有成功!。Gradle每次都想要更多的内存…@SiamakSiaSoft您的机器上有多少内存?它说的是同一条消息,它目前大约有910MB还是另一条?我正在使用我的笔记本电脑Fujitsu AH544-i7MQ-8G。当我将最大堆大小更改为2048M时,它要求我再次增加堆大小,值为3072M。现在想让我把它再次增加到5120米@这可能是真的,因为电报项目相当大。尝试关闭进程中的Dex功能-查看我的更新答案。它终于起作用了!你的第一个答案就成功了。谢谢你的帮助,谢谢你的快速反应。我做了所有这些事都没有成功!。Gradle每次都想要更多的内存…@SiamakSiaSoft您的机器上有多少内存?它说的是同一条消息,它目前大约有910MB还是另一条?我正在使用我的笔记本电脑Fujitsu AH544-i7MQ-8G。当我将最大堆大小更改为2048M时,它要求我再次增加堆大小,值为3072M。现在想让我把它再次增加到5120米@这可能是真的,因为电报项目相当大。尝试关闭进程中的Dex功能-查看我的更新答案。它终于起作用了!你的第一个答案就成功了。谢谢你的帮助,兄弟