डेमन को समाप्त करना क्योंकि जेवीएम हीप स्पेस समाप्त हो गया है


95

मैंने अभी एंड्रॉइड स्टूडियो को 3.5 बीटा 1 में अपडेट किया है और मुझे मिल रहा है

डेमन को समाप्त करना क्योंकि जेवीएम हीप स्पेस समाप्त हो गया है

संदेश जब निर्माण चल रहा हो। साथ ही, बिल्ड को पूरा होने में अधिक समय लग रहा है। क्या किसी को इस बारे में कोई विचार है?


2
यहां देखें कि क्या इससे मदद मिलती है: stackoverflow.com/questions/47207126/…
जुराज मार्टिंका

1
@JurajMartinka हाँ, आप सही हैं। IDE अधिकतम हीप आकार बढ़ाने के बाद यह ठीक हो गया । इसलिए वे नवीनतम एंड्रॉइड स्टूडियो 3.5 में मेमोरी सेटिंग्स नामक एक नया विकल्प पेश करते हैं । यह सब एंड्रॉइड स्टूडियो में मेमोरी लीक को ठीक करने के लिए किया जाता है।
ऋषभ सागर

जवाबों:


106

मैं निम्नलिखित को कॉन्फ़िगर करके अपनी प्रतिक्रिया मूल परियोजना के लिए इसे हल करने में सक्षम था :

// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

तथा

// app/build.gradle
android {
    dexOptions {
       javaMaxHeapSize "3g"
    }
}

1
मेरी मदद के लिए @MattBooth थैंक्स
Chanchad

2
जब मैंने यह कोड जोड़ा, तो प्रतिक्रिया-मूल-वेक्टर-आइकन ठीक से काम नहीं कर रहे थे।
अमीर गोरजी

आपका बहुत बहुत धन्यवाद। एक upvote मेरा आभार व्यक्त नहीं कर सकता।
पोकुमर्स

89

यह प्रोजेक्ट के लिए कॉन्फ़िगर किए गए अधिकतम हीप आकार को बढ़ाकर तय किया जा सकता है ।

आईडीई के माध्यम से:

Gradle.properties फ़ाइल में नीचे की पंक्तियाँ जोड़ें। रैम की उपलब्धता के आधार पर नीचे मेमोरी साइज़ को कॉन्फ़िगर किया जा सकता है

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m

GUI के माध्यम से:

सेटिंग्स में, 'मेमोरी सेटिंग्स' की खोज करें और सिस्टम रैम उपलब्धता के अनुसार आईडीई अधिकतम हीप आकार और डेमन अधिकतम ढेर आकार बढ़ाएं ।

एंड्रॉइड स्टूडियो में मेमोरी सेटिंग्स


FWIW org.gradle.daemon डिफॉल्ट को सही करता है ताकि लाइन की जरूरत न हो।
स्मॉल

25

इसका समाधान Android बिल्ड मेमोरी को बढ़ाना है।

जैसा कि आप अपने ऐप में अधिक मॉड्यूल जोड़ते हैं, एंड्रॉइड बिल्ड सिस्टम पर एक अविश्वसनीय मांग है, और डिफ़ॉल्ट मेमोरी सेटिंग्स काम नहीं करेगी। से बचने के लिए OutOfMemoryErrors दौरान एंड्रॉयड बनाता है, आप में वैकल्पिक Gradle स्मृति सेटिंग वर्तमान uncomment चाहिए /android/gradle.properties :

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

आप Android फ़ोल्डर के अंदर gradle.properties पा सकते हैं ।

पी.एस.

हम यह क्या कर रहे हैं और यह क्यों मदद करता है?

मुझे पूरी बात समझने के लिए कुछ बुनियादी शब्दावली स्पष्ट करें।

डेमॉन : - डेमॉन एक कंप्यूटर प्रोग्राम है जो एक इंटरैक्टिव यूजर के सीधे नियंत्रण में होने के बजाय एक पृष्ठभूमि प्रक्रिया के रूप में चलता है।

एंड्रॉइड स्टूडियो 2.1 एक नई सुविधा को सक्षम करता है: डेक्स इन प्रोसेस , जो तुरंत रन प्रदर्शन को बेहतर बनाने के साथ-साथ पूर्ण स्वच्छ बिल्ड की गति को नाटकीय रूप से बढ़ा सकता है।

डेक्स इन प्रोसेस का लाभ उठाने के लिए , आपको अपनी gradle.properties फ़ाइल को संशोधित करने की आवश्यकता होगी और org.gradle.jagmargs की संपत्ति का उपयोग करके ग्रैब डेमन वीएम को 1 जीबी तक आवंटित मेमोरी की मात्रा न्यूनतम 2 जीबी तक बढ़ानी होगी। :

डेमॉन प्रक्रिया के लिए उपयोग किए जाने वाले जेवीएम तर्कों को निर्दिष्ट करता है। सेटिंग विशेष रूप से मेमोरी सेटिंग्स को ट्विक करने के लिए उपयोगी है।

org.gradle.jvmargs=-Xmx2048m

डिफ़ॉल्ट मान:

-Xmx10248m -XX:MaxPermSize=256m

डिफ़ॉल्ट ग्रैडल डेमन वीएम मेमोरी आवंटन 1 गीगाबाइट है - जो डेक्स इनप्रोसेस का समर्थन करने के लिए अपर्याप्त है, इसलिए लाभ लेने के लिए आपको इसे कम से कम 2 गीगाबाइट पर सेट करना होगा।

Dex प्रक्रिया में कई DEX प्रक्रियाओं को एक एकल VM के भीतर चलाने की अनुमति देकर काम करता है जिसे ग्रेडल के साथ भी साझा किया जाता है, यही कारण है कि आपको सक्षम होने से पहले अतिरिक्त मेमोरी आवंटित करने की आवश्यकता होती है - यह मेमोरी ग्रेड और मल्टीपल DEX प्रक्रियाओं के बीच साझा की जाएगी।

यदि आपने javaMaxHeapSize को अपने मॉड्यूल-स्तर build.gradle फ़ाइल में 1 गीगाबाइट के डिफ़ॉल्ट से परे बढ़ा दिया है, तो आपको ग्रैड डेमन को सौंपी गई मेमोरी को इसी तरह बढ़ाने की आवश्यकता होगी।

जब पर्याप्त मेमोरी असाइन की गई डेक्स इन प्रोसेस को डिफ़ॉल्ट रूप से सक्षम किया जाता है, तो समग्र निर्माण प्रदर्शन में सुधार और कई समानांतर वीएम इंस्टेंसेस को शुरू करने के ओवरहेड को हटा दिया जाता है । परिणाम सभी बिल्ड समय में एक महत्वपूर्ण सुधार है, जिसमें इंस्टेंट रन, वृद्धिशील और पूर्ण बिल्ड शामिल हैं।

स्रोत: https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e

https://rnfirebase.io/#increasing-android-build-memory


1
क्या आप बता सकते हैं कि यह क्या कर रहा है और यह क्यों मदद करता है?
एलेक्स

1
साथ ही स्रोतों को लगाएं। medium.com/google-developers/…
ऋषभ सागर

1
हैलो @KailashUniyal क्या होगा अगर मेरे पास एंड्रॉइड स्टूडियो के गुई में 2048 पर ढेर का आकार है और मुझे अभी भी 'एक्सपायरिंग डेमॉन मिल रहा है क्योंकि जेवीएम हीप स्पेस समाप्त हो गया है'?
अबदी

1
@abdi इसे org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8gradle.properties में डालने का प्रयास करें । अगर अभी भी काम नहीं कर रहा है तो क्षमा करें मुझे नहीं पता कि इसे कैसे ठीक किया जाए।
कैलाश उनियाल

1
संयुक्त राष्ट्र org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8में android/gradle.propertiesकाम करने वाली टिप्पणी एक आकर्षण। धन्यवाद!! @KailashUniyal
विकास बंसल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.