Android Studio Google JAR फ़ाइल जिसके कारण GC ओवरहेड सीमा त्रुटि से अधिक हो गई है


210

मैं ओएस एक्स पर एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं। मुझे यह त्रुटि संदेश मिल रहा है:

विफलता: बिल्ड अपवाद के साथ विफल हुआ।

  • क्या गलत हुआ: कार्य के लिए निष्पादन विफल रहा ': ऐप: प्रीडेक्सडबग'। com.android.ide.common.internal। SilentSMS / ऐप / बिल्ड / इंटरमीडिएट / प्री-डेक्सड / डिबग / एंड्रॉइड-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar/Users/alex/AndroidStudioProjects/SilentSMS/appibs/libs

    त्रुटि कोड: 3 आउटपुट:

  UNEXPECTED TOP-LEVEL ERROR:
  java.lang.OutOfMemoryError: GC overhead limit exceeded
      at com.android.dx.cf.code.RopperMachine.getSources(RopperMachine.java:665)
      at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:288)
      at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612)
      at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412)
      at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
      at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:782)
      at com.android.dx.cf.code.Ropper.doit(Ropper.java:737)
      at com.android.dx.cf.code.Ropper.convert(Ropper.java:346)
      at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282)
      at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
      at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
      at com.android.dx.command.dexer.Main.processClass(Main.java:682)
      at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
      at com.android.dx.command.dexer.Main.access$600(Main.java:78)
      at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
      at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
      at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
      at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
      at com.android.dx.command.dexer.Main.processOne(Main.java:596)
      at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
      at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
      at com.android.dx.command.dexer.Main.run(Main.java:230)
      at com.android.dx.command.dexer.Main.main(Main.java:199)
      at com.android.dx.command.Main.main(Main.java:103)

मैं इस पुस्तकालय का उपयोग कर रहा हूं:

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/

मैंने JAR फ़ाइल खींची और उसे अपने प्रोजेक्ट में जोड़ा - मैं जिस प्रोजेक्ट को बनाने की कोशिश कर रहा हूं वह है:

https://github.com/domi007/silentSMS/

मुझे यह समझ में आता है क्योंकि मेरे xms और xmx मान बहुत कम हैं। मैंने उन्हें बढ़ा दिया:

/ अनुप्रयोग / Android Studio.app/bin/idea.vmoptions ताकि यह अब कहे:

-Xms256m
-Xmx1024m

हालाँकि, मुझे अभी भी त्रुटि मिलती है। इसके कारण क्या हो सकते हैं? साइलसएमएस ऐप के अलावा एक एक्लिप्स प्रोजेक्ट और मुझे एंड्रॉइड स्टूडियो पर कोड को पोर्ट करने के अलावा मैंने कुछ भी नहीं बदला है। एंड्रॉइड स्टूडियो स्पॉटिंग त्रुटियों के संदर्भ में - यह नहीं है, और बाकी सब कुछ ठीक दिखता है।

जवाबों:


547

मुझे लगता है कि डेक्सिंग ऑपरेशन के ढेर की सीमा बढ़ाने का एक अलग तरीका है। इसे androidअपनी build.gradleफ़ाइल में बंद करने के लिए जोड़ें :

dexOptions {
    javaMaxHeapSize "4g"
}

और देखें कि क्या मदद करता है।

( स्कॉट बार्टा से इस जवाब के विचार शिष्टाचार )


45
4gथोड़ा ओवरकिल है, 2gठीक है
ह्यूगो ग्रेस

3
बहुत खुबस! इससे मेरी त्रुटि भी ठीक हो गई। मुझे लगता है कि मैं इसे जितनी अधिक मेमोरी देता हूं, उतनी ही तेजी से निर्माण होता है। मैं 1 मिनट से 19 सेकंड तक चला गया।
साइमन

2
मुझे अभी भी त्रुटि मिलती है: java.lang.OutOfMemoryError: GC ओवरहेड सीमा पार हो गई [org.gradle.api.internal.project.ant.AntLoggingAdapter] पर java.util.BitSet.clone
IgorGanapolsky

7
मैंने इसे जोड़ दिया है, लेकिन मैं अभी भी देखता हूंOutOfMemoryError
चाड बिंगहैम

8
मेरे लिए काम नहीं किया, gradle.properties में ऊपर की जरूरत है:org.gradle.jvmargs=-XX:MaxPermSize=1024m -Xms1024m -Xmx4096m -XX:ReservedCodeCacheSize=1024m
hmac

93

मेरे मामले में, ढेर का आकार बढ़ाने के लिए इस तरह दिखता है:

एंड्रॉइड स्टूडियो 1.1.0 का उपयोग करना

android {
    dexOptions {
        incremental true
        javaMaxHeapSize "2048M"
    }
}

ऊपर दिए गए कोड को अपनी Build.gradle फ़ाइल में रखें।


4
यह काम करने के GC overhead limit exceededबाद मैंने मल्टीडेक्सिंग को सक्षम किया। इसका अपवाद थाat com.android.dx.command.dexer.Main.runMultiDex(Main.java:334)
कोई व्यक्ति

यह एक टिप्पणी के रूप में सुंदर नहीं होने जा रहा है, लेकिन एंड्रॉइड स्टूडियो त्रुटि ने `UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC ओवरहेड सीमा को पार कर दिखाया` अपवाद का स्थान at com.android.dx.util.FixedSizeList.<init>(FixedSizeList.java:38)ऊपर था और स्टैक के शीर्ष पर थाcom.android.dx.command.dexer.Main.runMultiDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:244) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)
किसी ने कहीं

1
लेकिन जैसे ही मैंने आपको javaMaxHeapSize और वृद्धिशील मापदंडों का सुझाव दिया, जोड़ा गया, Android Studio मल्टी-डेक्सड ऐप बनाने में सक्षम था।
किसी ने 18

यदि 2gb कुछ बिंदु के लिए पर्याप्त नहीं है, तो मैं 4gb की कोशिश करूँगा जो कि सामान्यवेयर ने सुझाया है।
कोई व्यक्ति

1
धन्यवाद। ध्यान दें कि डॉक्स किस बारे में कहता है incremental: इसकी कई सीमाएँ हैं और यह काम नहीं कर सकता है। सावधानी से प्रयोग करें।
फेरन मायलिनच

41

यह नया मुद्दा Android के नवीनतम संस्करण के कारण है।

अपने प्रोजेक्ट रूट फ़ोल्डर में जाएं, खोलें gradle.propertiesऔर निम्न विकल्प जोड़ें:

org.gradle.daemon=true

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

org.gradle.parallel=true

org.gradle.configureondemand=true

फिर इन परिवर्तनों को अपनी build.gradleफ़ाइल में जोड़ें :

dexOptions {
        incremental = true
        preDexLibraries = false
        javaMaxHeapSize "4g" // 2g should be also OK
}

1
चेतावनी: android.dexOptions.incrementalसंपत्ति को पदावनत किया जाता है और इसका निर्माण प्रक्रिया पर कोई प्रभाव नहीं पड़ता है।
tir38

इससे मेरी समस्या हल हो गई। लेकिन i; ts java_pid1512.hprof नामक एक फाइल बना रहा है जो बहुत बड़ी है। मैं अनुमान लगा रहा हूँ कि आपका Dfile विकल्प इसे बना रहा है? क्या यह आवश्यक है और क्या आप दिखा सकते हैं कि फाइल को डंप को कैसे हटाया जाए
j2emanue

1
: @ j2emanue: यह फ़ाइल "HeapDumpOnOutOfMemoryError" विकल्प की वजह से बनाई गई है docs.oracle.com/cd/E15289_01/doc.40/e15062/...
Mehlyfication

1
अद्यतन करने की आवश्यकता हो सकती है: incremental2018 के अंत में हटा दिया गया है
cuasodayleo

AS 3.4 में "org.gradle.jvmargs = -Xmx2048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile = UTF-8" को gradle.properties फ़ाइल में सक्षम करने से मेरे लिए समस्या हल हो गई है
JimmyFlive

4

मैं अपने इंस्टेंट रन को अक्षम करता हूं:

मेनू वरीयताबिल्डइंस्टेंट रन "इनेबल इंस्टेंट रन टू हॉट स्वैप कोड"

मुझे लगता है कि यह इंस्टेंट रन है जो बिल्ड को धीमा बनाता है और एक बड़े आकार की pidXXX.hprof फाइल बनाता है जो AndroidStudio gc ओवरहेड सीमा को पार कर जाता है।

(मेरा डिवाइस एसडीके 19 है।)


आपको यह कैसे पता चला कि यह इंस्टेंट रन था जिसने इतनी बड़ी hprof फाइल बनाई? मैंने देखा कि हाल ही में हमारे GitLab सर्वर पर एक बनाया गया है, लेकिन हमारे पास तत्काल रन सक्षम नहीं है।
एडममैका १३

4

Android स्टूडियो 3.5.3

मेमोरी सेटिंग्स (Cmd + Shift + A मैक पर खोजें या सहायता पर क्लिक करें और प्राथमिकता / सेटिंग्स के तहत "मेमोरी सेटिंग्स" टाइप करना शुरू करें) और अपनी संतुष्टि के लिए आईडीई हीप साइज़ और / या डेमन हीप साइज़ बढ़ाएँ। यहां छवि विवरण दर्ज करें


1
धन्यवाद आपने मेरा दिन बचाया।
वीरेंद्र पाल सिंह


0

मैंने टास्कमाँगर से सभी Java.exe को बंद कर दिया, Android Studio को फिर से शुरू किया और यह मेरे लिए काम कर गया

यहां छवि विवरण दर्ज करें


0

मेरे लिए गैर जवाब के काम मैं यहाँ देखा काम किया। मैंने अनुमान लगाया कि सीपीयू का काम बहुत कठिन होना कंप्यूटर को गर्म बनाता है। जब मैंने बड़ी मात्रा में सीपीयू (जैसे क्रोम) का सेवन किया और मेरे लैपटॉप को ठंडा करने वाले कार्यक्रमों को बंद कर दिया तो समस्या गायब हो गई।

संदर्भ के लिए: मेरे पास 96% -97% पर सीपीयू और मेमोरी का उपयोग 2,000,000K से अधिक java.exe प्रक्रिया (जो वास्तव में ग्रेडल संबंधित प्रक्रिया थी) द्वारा किया गया था।


आपका समाधान यहां बताई गई विशिष्ट समस्या से कैसे संबंधित है?
कलाबलिक

मुझे वही त्रुटि ऊपर दी गई है: java.lang.OutOfMemoryError: GC ओवरहेड सीमा पार हो गई है जो समाधान मैंने पेश किया वह मेरे लिए इस त्रुटि को हल कर दिया
olNoy

0

मैं उपयोग कर रहा हूं Android Studio 3.4और मेरे लिए काम करने वाली एकमात्र चीज मेरी build.gradleफाइल से निम्नलिखित पंक्तियों को हटाना है :

minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

क्योंकि Android Studio 3.4में उपयोग कर रहा R8है full modeऔर साथ संगत नहीं हैProguard


2
मुझे लगता है कि यह एक समाधान नहीं है जब आपको एक निर्मित बिल्ड जारी करना होगा। मैंने एंड्रॉइड स्टूडियो 3.4 के साथ gradle-5.2.1 का उपयोग किया है और यह pro-guard कॉन्फ़िगरेशन के साथ भी ठीक काम कर रहा है जबकि gradle-5.1.1 में इसी तरह के मुद्दे थे। minifyEnabled true
विकास पाटीदार २३'१

हम जो चाहते हैं, उसके ठीक विपरीत है। -1
ज़ून

जैसा मैंने कहा, मेरे लिए यह काम कर गया और त्रुटि दूर हो गई और आखिरकार मैं एपीके को जनरेट कर पाया। मेरी परियोजना में अन्य किसी भी उत्तर ने काम नहीं किया।
21

अपग्रेड टू 5.2.1 रन कैममैंड इन / प्रोजेक्ट / एंड्रॉइड ./gradlew wrapper --gradle-version=5.2.1
अशोक देवतवाल

0

मेरे मामले में, मैं अपना संपादन करता हूं gradle.properties:

नोट: यदि आप सक्षम करें minifyEnabled true:

इस लाइन को हटा दें:

android.enableR8=true

और इस पंक्तियों को उर में जोड़ें build.gradle, androidब्लॉक करें:

  dexOptions {
        incremental = true
        preDexLibraries = false
        javaMaxHeapSize "4g" // 2g should be also OK
    }

उम्मीद है कि इस मदद से कुछ एक :)


0

4g थोड़ा ओवरकिल है, यदि आप बिल्डग्रेडल को बदलना नहीं चाहते हैं तो आप FILE -> अमान्य कैश या पुनरारंभ का उपयोग कर सकते हैं।

Thats मेरे लिए ठीक काम ...


0

कुछ बिंदु पर डुप्लिकेट कॉपी apply plugin: 'com.android.application'मेरे निर्माण में जोड़ दी गई। डुप्लिकेट कॉपी को हटाना और यह सुनिश्चित करना कि मेरे सभी लागू प्लगइन्स शीर्ष पर थे मेरे लिए समस्या तय हो गई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.