Error:java.lang.OutOfMemoryError: GC overhead limit exceeded error on Telegram
Error:java.lang.OutOfMemoryError: GC overhead limit exceeded error on Telegram
我是 Android 的新手,正在尝试 运行 Telegram source code provided on GitHub Android,但我遇到了一些可怕的错误,经过几天的谷歌搜索后,我什么也没找到全部!
我只是按照说明操作,但它不起作用。错误说 Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
但即使在增加最大堆大小之后,它也会抛出相同的错误,但会抛出更多内存。
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
有谁知道为什么会发生这种情况以及如何做到这一点运行?
我将非常感谢任何拥有有效 Telegram 项目并与我分享该代码的人。
问题
如日志消息中所述,Gradle 需要更多内存,因为它使用 Dex In Process 功能。
To run dex in process, the Gradle daemon needs a larger heap.
It 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.
Gradle 本身是用 Java 编写的,并且像任何其他 Java 程序一样,它拥有的内存量受堆大小的限制。
Heapsize, Stacksize and Garbage Collection Fundamentals
解决方案
选项 1 - 增加堆大小
要增加堆大小,请增加堆的最大可用量 - 设置 JVM 选项 -Xmx
。尝试按照日志消息的建议设置 2GB:-Xmx2048M
。在Gradle中,通过在项目gradle.properties中写org.gradle.jvmargs=-Xmx2048M
来完成。该文件位于 build.gradle 旁边。如果没有,请手动创建一个。
之后,如果错误仍然存在,请尝试明确告诉 Dex In Process 功能它现在有多少内存 - 将其添加到 build.gradle(app模块)。请注意,它应该小于 Gradle 可用的内存总量,即如果 Gradle 有 2GB,则为 Dex In Process 设置 1GB:
android {
....
dexOptions {
// To prevent OutOfMemory
javaMaxHeapSize "1G"
}
}
尝试更大的值,实际值取决于项目。
选项 2 - 关闭进程中的 Dex 功能
尽管据说如果没有此功能构建速度会变慢,请尝试将其关闭。
android {
// ...
dexOptions {
dexInProcess = false
}
}
我是 Android 的新手,正在尝试 运行 Telegram source code provided on GitHub Android,但我遇到了一些可怕的错误,经过几天的谷歌搜索后,我什么也没找到全部!
我只是按照说明操作,但它不起作用。错误说 Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
但即使在增加最大堆大小之后,它也会抛出相同的错误,但会抛出更多内存。
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
有谁知道为什么会发生这种情况以及如何做到这一点运行?
我将非常感谢任何拥有有效 Telegram 项目并与我分享该代码的人。
问题
如日志消息中所述,Gradle 需要更多内存,因为它使用 Dex In Process 功能。
To run dex in process, the Gradle daemon needs a larger heap. It 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.
Gradle 本身是用 Java 编写的,并且像任何其他 Java 程序一样,它拥有的内存量受堆大小的限制。
Heapsize, Stacksize and Garbage Collection Fundamentals
解决方案
选项 1 - 增加堆大小
要增加堆大小,请增加堆的最大可用量 - 设置 JVM 选项 -Xmx
。尝试按照日志消息的建议设置 2GB:-Xmx2048M
。在Gradle中,通过在项目gradle.properties中写org.gradle.jvmargs=-Xmx2048M
来完成。该文件位于 build.gradle 旁边。如果没有,请手动创建一个。
之后,如果错误仍然存在,请尝试明确告诉 Dex In Process 功能它现在有多少内存 - 将其添加到 build.gradle(app模块)。请注意,它应该小于 Gradle 可用的内存总量,即如果 Gradle 有 2GB,则为 Dex In Process 设置 1GB:
android {
....
dexOptions {
// To prevent OutOfMemory
javaMaxHeapSize "1G"
}
}
尝试更大的值,实际值取决于项目。
选项 2 - 关闭进程中的 Dex 功能
尽管据说如果没有此功能构建速度会变慢,请尝试将其关闭。
android {
// ...
dexOptions {
dexInProcess = false
}
}