ग्रहण की स्मृति उपयोग को कैसे कम करें?


81

ग्रहण 3.4 का मेमोरी उपयोग छत के माध्यम से उस बिंदु तक होता है जहां यह एक मुद्दा बन रहा है।

मेरे पास एक साधारण ब्लैकबेरी परियोजना भरी हुई है और उपयोग आसमान छू रहा है लगभग 400 एमबी, कभी-कभी अधिक। क्या ऐसा कुछ है जो इसे नीचे लाने के लिए किया जा सकता है?


7
इस प्रश्न पर अब पीछे मुड़कर देखें, तो मुझे यह कहना पड़ेगा कि यदि मैं अपने ग्रहण की स्मृति को 400MB तक कम कर पाया तो मुझे खुशी होगी। अभी मैं इसे 1GB तक कम करने के लिए संघर्ष कर रहा हूं (यदि आप वास्तव में मेरी परियोजनाओं को चलाने के लिए टॉमकैट की एक प्रति भी शामिल करते हैं तो प्लस 300MB)।
जूल्स

5
मैं इस टिप्पणी को भविष्य (2018) से लिख रहा हूं और ग्रहण मेरी वर्तमान परियोजना पर 10 जीबी ले रहा है।
बेंजामिन बर्रोइस

मैं अभी 2030 से वापस आ गया हूं और प्रोजेक्ट लोड करने से पहले एक्लिप्स 5 टेराबाइट्स ले रहा है।
एंग्रीहैकर

जवाबों:


86

ग्रहण 3.4 पिछले संस्करणों की तुलना में बहुत अधिक मेमोरी का उपभोग कर सकता है, स्पेलसेचर प्लग-इन शिष्टाचार

आप विंडो -> वरीयताएँ -> सामान्य -> ​​संपादकों -> पाठ संपादकों -> वर्तनी, और बॉक्स शीर्षक 'सक्षम वर्तनी जाँच' को अनचेक करके प्लग-इन को बंद कर सकते हैं।

बेशक, बड़े हीप आकार और बेहतर कचरा संग्रहकर्ता का उपयोग करने के लिए दिए गए सुझाव आपको अच्छा करेंगे।


12
मेरे लिए काम नहीं किया। अभी भी 900-930MB पर। मेरा मतलब है कि wtf यह कर सकता है।
RealChx101

5
बहुत बढ़िया जवाब। 1 प्लग-इन, लगभग 50 अन्य जिनके बारे में मैंने कभी नहीं सुना है / जाने के लिए उपयोग नहीं किया। (स्वयं पर ध्यान दें,
इंटेलीज

10
2016 और अभी भी इस मुद्दे का सामना कर रहा है। मेरा मतलब है कि मेरे 1GB स्पेस पर ग्रहण लगा हुआ है। वर्तनी जाँचकर्ता प्लगइन को बंद करना या तो मदद नहीं करेगा।
लकी

12
2017 और मेरा ग्रहण अब लगभग कोई अतिरिक्त प्लगइन्स के साथ 1.7GB RAM का उपयोग कर रहा है। इस पागलपन का अंत होना है।
स्टॉर्म

18

जाँच General -> Show heap statusकरने से यह सक्षम हो जाएगा

ग्रहण हीप स्थिति पट्टी

नीचे पट्टी में। इस तरह आप कचरा संग्राहक पर जब चाहे तब मैन्युअल रूप से कचरा इकट्ठा कर सकते हैं। यह फिक्स नहीं है, वर्कअराउंड की तरह अधिक है, लेकिन इसने मेरी रैम / सीपीयू उपयोग को कम करने में मदद की।


2
इससे मुझे यह पहचानने में मदद मिली कि 4GB रैम को ग्रहण करने के लिए आवंटित किया गया था, वास्तव में इसका उपयोग नहीं किया जा रहा था, हालांकि OS ने दिखाया कि 4GB उपयोग में था। मैंने अन्य अनुप्रयोगों के लिए रैम को मुक्त करने में मदद करने के लिए ग्रहण करने के लिए आवंटित राम की मात्रा को कम कर दिया।
नवगीतोन

1
चूंकि स्पिंग टूल सूट ग्रहण से निकला है, इसलिए यह एसटीएस के साथ भी काम करता है
तालिब हुसैन

9

ग्रहण में ०.४.१ ग्रहण में मेरी स्मृति उपयोग में कटौती करने की कोशिश कर रहा था। मैं 600mb से 300mb तक मेरा दाढ़ी बनाने में कामयाब रहा। मैंने निम्नलिखित कार्य किया:

  • स्टार्टअप पर सक्रिय प्लगइन्स को बंद कर दिया जो मैं उपयोग नहीं कर रहा था। विंडोज> वरीयताएँ> सामान्य> स्टार्टअप और शटडाउन

  • बंद परियोजनाएं मैं उस समय काम नहीं कर रहा था।

यहाँ संकेत / सुझाव मिले: http://blog.elijaa.org/2010/09/20/tricks-to-speed-up-eclipse-php-helios-pdt-2-2/


8

जब आप संभवतः कॉन्फ़िगरेशन के साथ छेड़छाड़ कर सकते हैं , विभिन्न प्लगइन्स आदि को हटा सकते हैं, तो अधिक मेमोरी खरीदने के लिए अधिक लागत प्रभावी होने की संभावना है। वर्तमान में आपके पास कितना है? मैं कल्पना के तहत 2GB से कम मेमोरी वाली डेवलपर मशीन पर विचार करूंगा, और मुझे संदेह है कि बहुत से लोग इसे दोगुना करेंगे ...


3
अधिक सहमत नहीं हो सका। 1GB RAM $ 20-30 जितना कम है। आपका समय कितना कीमती है? एक्लिप्स में काम करने के लिए प्लगइन्स का संग्रह प्राप्त करना कठिन काम है, इसके बिना (यकीनन) अनावश्यक रूप से।
cletus

2
मैं अधिकतम 2GB (यह एक पुराना लैपटॉप है)। समस्या यह है कि ब्लैकबेरी सिम्युलेटर लोड होने के बाद, विजुअल स्टूडियो (वेब ​​सेवाएं) और क्रोम (वेब ​​पर सामान देखने के लिए), लैपटॉप एक क्रॉल पर आता है। लेकिन ग्रहण अब तक का सबसे बड़ा अपराधी है। यह 3.3 या 3.2 संस्करणों के साथ इतना बुरा नहीं था।
एंग्रीहैकर

2
पूरी तरह से असहमत। डेवलपर मशीनों को इस कारण से कम से कम 50% (सीपीयू और रैम) द्वारा अंत-उपयोगकर्ता की मशीन की तुलना में कम कल्पना होना चाहिए ।
फाइनव

4
@finnw: आपको क्या लगता है कि डेवलपर मशीन का वर्कलोड उपयोगकर्ता की मशीन के वर्कलोड जैसा कुछ है? कई अनुप्रयोगों को IDE के रूप में संसाधनों की तरह से कुछ भी करने की आवश्यकता नहीं है। आपको निश्चित रूप से कम-स्पेक मशीन पर अपने एप्लिकेशन का परीक्षण करना चाहिए , लेकिन इसका मतलब यह नहीं है कि इसे एक पर विकसित करना है। वास्तव में, आप पहले से ही स्पष्ट रूप से क्लाइंट-साइड ऐप मान रहे हैं। यदि मैं एक वेब ऐप विकसित कर रहा हूं जो मोबाइल उपकरणों को लक्षित कर रहा है, तो क्या मुझे मोबाइल फोन पर भी विकास करना चाहिए?
जॉन स्कीट

2
@ नैट: यह सीधा सवाल था, लेकिन स्टैक ओवरफ्लो पर बहुत बार यह देखने के लिए अधिक उपयोगी है सवाल की तुलना में समस्या । किसी के एसक्यूएल में मानों श्रृंखलाबद्ध और कुछ उद्धरण भूल करते हैं, तो का सीधा जवाब सवाल उद्धरण में जोड़ने के लिए होगा, लेकिन का हल समस्या पैरामिट्रीकृत एसक्यूएल है। यदि ओपी 400 एमबी के बारे में चिंतित है, तो यह मुझे लगता है कि डेवलपर मशीन के लिए मेमोरी की सामान्य कमी व्यापक समस्या है।
जॉन स्कीट

8

ग्रहण के आधुनिक संस्करणों को अपनी बात करने के लिए काफी रैम की आवश्यकता होती है। लेकिन अभी भी किसी भी आधुनिक मशीन पर बहुत तेजी से चलना चाहिए।

मान लें कि आपके पास पर्याप्त भौतिक मेमोरी है (2GB तब तक ठीक है जब तक कि आपके पास बहुत सारी अन्य प्रक्रियाएं चल रही हों, या आप RAD का उपयोग कर रहे हों), सेटिंग्स को ट्विक करने के कुछ टिप्स के लिए ग्रहण के मेमोरी उपयोग पर यह लेख देखें । दो सबसे आम अपराधी Xmx और / या MaxPermSize बहुत कम सेट किए जा रहे हैं (Xmx डिफॉल्ट्स 256M और MaxPermSize डिफॉल्ट्स 64M तक)।

आप कमांड लाइन तर्क पारित करके या ग्रहण स्थापित स्थान में eclipse.ini को घुमाकर मूल्यों को संशोधित करते हैं।

आपको कुछ इस तरह से समाप्त करना चाहिए:

...
-vmargs
-Xms128m
-Xmx1024m 
-XX:MaxPermSize=128m

1
MaxPermSize अब नहीं है
रे किम

7

+UseG1GCEclipse.ini से विकल्प निकालें । मैंने यहाँ से पढ़ा है कि यह केवल 6GB हीप मेमोरी के लिए उपयोग किया जाता है।


3
हां, यह मेरे लिए काम कर गया। मैं के -XX:+useG1GCसाथ बदल दिया -XX:+UseSerialGCऔर स्मृति मुद्दा गायब हो गया। G1GC में एक बग की तरह लगता है।
डॉन स्मिथ

1
-XX:+UseSerialGCकट आउट> 300mb पर स्विच करना । अंगूठे
अमन

6

मेरा ग्रहण 800 एमबी से अधिक का निवासी है, और 2 जीबी वर्चुअल (इसका कुछ हिस्सा स्वैप किया गया था)। जावा सकते हैं एक हॉग सकता है, यह जावा को हर समय खराब प्रेस दे रहा है।

हालांकि, कुछ ऐसा है जो बहुत से लोग नहीं जानते हैं: वृद्धिशील कचरा कलेक्टर। -Xincgc साइड इफेक्ट यह है कि यह समय-समय पर सिस्टम को वापस मेमोरी सौंपता है। डिफ़ॉल्ट रूप से जावा बस लेता है और लेता है, और जब उसे मेमोरी की आवश्यकता नहीं होती है, तो वह इसे अपने लिए रखता है। इन्कग एक अलग रणनीति है, जहां यह मान लेना अधिक उचित हो जाता है कि स्मृति को मुसीबत में न आकर सिस्टम को वापस सौंप दिया जाए। हालांकि यह प्रदर्शन को प्रभावित कर सकता है।

कई कचरा संग्रह सेटिंग्स हैं। आप जीसी को कई थ्रेड संभाल भी सकते हैं। समानांतर GC वह करता है। यकीन नहीं होता है कि एक हाथ वापस स्मृति, ऐसा मत सोचो।


और ग्रहण के लिए कचरा कलेक्टर विकल्प कैसे बदलें?
मैथ्यू

3
चीजें बदल गई। जावा 8 में डिफ़ॉल्ट जीसी अब, एक जेनरल कचरा कलेक्टर है जो सिस्टम को मेमोरी भी वापस करता है। अब आप इसके साथ मजाक नहीं करना चाहते ...
माइक

1
मेरे मामले में java 8 को 3GB से अधिक रखने की खुशी है जब वास्तविक उपयोग 0.5GB से कम है, तो दुर्भाग्य से मुझे इसके बारे में मजाक करने की आवश्यकता नहीं है।
nsandersen

3

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

अभी, मेरे पास ग्रहण और QtCreator दोनों में एक ही परियोजना खुली है: एक साफ पुनर्निर्माण के बाद, ग्रहण 156 एमबी रैम का उपयोग करता है, क्यूटी निर्माता 66 एमबी से खुश है।


2

आप विंडोज 7 पर जेडीके के 64 बिट संस्करण के साथ ग्रहण के 64 बिट संस्करण की कोशिश कर सकते हैं। उन दोनों ने तीसरे पक्ष के फ्रेमवर्क के साथ कुछ अजीब मुद्दों का कारण बना, जिनके साथ मुझे काम करना है। ओरेकल से 32-बिट JRockit (अब मुक्त) स्मृति में तेज़ और थोड़ा बेहतर लगता है। यह मेरी Eclipse.ini सेटिंग है:

यह मेरा ग्रहण सराय है

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-nosplash
org.eclipse.platform
--launcher.XXPermSize
512m
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vm
C:/Program Files (x86)/Java/jrockit-jdk1.6.0_31-R28.2.3-4.1.0/jre/bin
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xquickstart
-XX:+AggressiveHeap
-XX:+AggressiveOpts
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=2
-XX:ThreadPriorityPolicy=1
-Xverify:none
-Xms1100m
-Xmx1100m

मैंने 32 बिट JRockit JDK पर स्विच किया जो कि ग्रहण के लिए थोड़ा तेज़ है। मैं बंद करता हूं और जरूरत से ज्यादा नहीं लगाता। प्रत्येक अलग प्रकार के ऐप डेवलपमेंट के लिए (Android, J2EE, बस स्प्रिंग, ...) मेरे पास अलग-अलग एक्लिप्स इंस्टालेशन हैं। हार्ड ड्राइव स्पेस सस्ता है। तब मेरे पास सिर्फ एक प्लगइन्स हो सकते हैं जिनकी मुझे जरूरत है। अगर मैं उनका उपयोग नहीं कर रहा था, तो मैं कभी भी सभी Android टूल लोड नहीं करना चाहूंगा। एसटीएस सिर्फ स्प्रिंग सामान के लिए भी अच्छा है और मेरे पास ओपेनशिफ्ट क्लाउड काम के लिए सिर्फ एक है।


मैं थोड़ा उलझन में हूँ, जैसा कि आपने पहले किया है --launcher.XXMaxPermSize 512m और फिर --launcher.XXMaxPermSize 256m (और डुप्लिकेट लाइनों की एक जोड़ी, यानी defaultAction, और फिर शोप्लेश के साथ एक साथ नामांकित करें)। क्या यह पाया गया पहला कॉन्फ़िगरेशन का उपयोग करता है?
जाम्बरीज़

इसमें दूसरा नहीं होना चाहिए। मैंने फिर से जाँच की और मेरे वर्तमान में ऐसा नहीं है। इसके अलावा, यदि आप JDK 8 विभिन्न मापदंडों का उपयोग कर रहे हैं
टिम स्पैन

1

अपने ग्रहण प्लगइन्स को अक्षम करने का प्रयास करें। ग्रहण की मेरी स्मृति के आधे हिस्से को हिला रहा था जब मेरे पास सरोस प्लग खुला था।

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