2008-09-18 7 views
33

मैं हाल ही में गैनीमेड रिलीज का उपयोग करता हूं, विशेष रूप से जावा ईई और वेब डेवलपर्स के लिए डिस्ट्रो। मैंने कुछ अतिरिक्त प्लगइन्स स्थापित किए हैं (उदा। उपclipse, वसंत, FindBugs) और सभी Mylyn प्लगइन्स हटा दिया।मैं ग्रहण गैनीमेड की स्मृति उपयोग को कैसे कम कर सकता हूं?

मैं ग्रहण के भीतर विशेष रूप से भारी शुल्क नहीं करता जैसे कि ऐप सर्वर शुरू करना या डेटाबेस से कनेक्ट करना, फिर भी किसी कारण से, कई घंटों के उपयोग के बाद, मुझे लगता है कि ग्रहण 500 एमबी मेमोरी का उपयोग कर रहा है।

क्या कोई जानता है कि ग्रहण इतनी मेमोरी (लीकी?) का उपयोग क्यों करता है, और सबसे महत्वपूर्ण बात यह है कि अगर मैं इसे सुधारने के लिए कुछ भी कर सकता हूं?

उत्तर

2

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

+1

यह क्या के लिए खाई? मेमोरी सस्ता है ... –

+6

हाँ, लेकिन आप अपने हाथ में रैम के साथ काम पर नहीं दिखा सकते हैं और इसे कंप्यूटर में क्रैक कर सकते हैं। –

0

ठीक है, आप यह निर्दिष्ट नहीं करते कि यह कौन सा प्लेटफ़ॉर्म होता है। यदि आप Windows XP, Vista, Linux, OS X का उपयोग कर रहे हैं, तो स्मृति प्रबंधन भिन्न हो सकता है ...

आमतौर पर, मेरे कंप्यूटर (राम के 1 जीबी के साथ विनएक्सपी) पर, ग्रहण 200 एमबी से अधिक शायद ही लेता है, depengin खुली परियोजनाओं का आकार, भारित प्लगइन्स और चल रही कार्रवाई।

1

रैम अपेक्षाकृत सस्ता है (यह नहीं कि यह खराब स्मृति प्रबंधन के लिए एक बहाना है)। अप्रयुक्त स्मृति अनिवार्य रूप से WASTED स्मृति है। यदि आप सीमाएं मार रहे हैं और आईडीई समस्या कम मल्टीटास्किंग पर विचार करें, अपनी मेमोरी रिक्त समायोजित करें, या अधिक खरीद लें। यदि ग्रह आपकी रोटी और मक्खन आईडीई है तो मैं ग्रहण को अपंग नहीं करूंगा।

3

स्मृति में चलते समय गैनीमेड जावा ईई प्लगइन्स बिल्कुल विशाल हैं। इसके अलावा, मुझे एक लंबे कोडिंग सत्र पर FindBugs और इसकी विश्वसनीयता के साथ बुरे अनुभव हुए हैं।

यदि आप इन प्लगइन के बिना नहीं जी सकते हैं, तो आपका एकमात्र सहारा परियोजनाओं को बंद करना है। यदि आप की संख्या को अपने कार्यक्षेत्र में प्रोजेक्ट खोलते हैं, तो कंपाइलर (और FindBugs) के बारे में चिंता करने की आवश्यकता कम होगी और आपकी मेमोरी उपयोग बहुत कम हो जाएगी।

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

+1

या अधिक मेमोरी खरीदें। दो सौ एमबी रैम बचाने के लिए कार्यक्षमता के बिना क्यों रहते हैं? –

2

ग्रहण एक सुंदर फूला हुआ आईडीई है। आप प्रोजेक्ट -> स्वचालित रूप से बिल्ड के तहत स्वचालित प्रोजेक्ट बिल्डिंग को चालू करके इसे कम कर सकते हैं। यह किसी भी खुली परियोजना को बंद करके आपकी सहायता भी की जा सकती है, जिस पर आप वर्तमान में काम नहीं कर रहे हैं।

2

मैं इसे फूला हुआ कहूंगा, लेकिन रिसाव नहीं। (यदि यह कमजोर था तो यह चढ़ाई और चढ़ाई तक चढ़ाई करेगा।) जैसा कि अन्य ने कहा है, स्मृति सस्ते है! यह मेरे लिए एक साधारण निर्णय जैसा प्रतीत होता है: अधिक स्मृति बनाम उत्पादकता खोने पर एक छोटा सा बिताएं क्योंकि आपके पास ग्रहण @ 500 एमबी चलाने के लिए मेमोरी बजट नहीं है।

संक्षिप्त बयानबाजी सवाल: क्या और अधिक मूल्यवान है:

  1. उत्पादकता एक IDE आप प्लग इन आप चाहते हैं के साथ पता है, या
  2. कुछ स्मृति पर $ 50-200 खर्च का उपयोग करने से फायदा हुआ?
3

मुझे नहीं लगता कि जेवीएम बहुत कचरा संग्रह करता है जब तक कि इसे (यानी यह इसकी सीमा तक पहुंच रहा हो)। इसलिए यह eclipse.ini (-Xmx तर्क, यहां 512 एमआईबी पर सेट) में निर्धारित सीमा तक संभवतः प्राप्त होने वाली सभी मेमोरी को पकड़ लेता है।

आप 'प्राथमिकताएं' -> 'सामान्य' -> 'ढेर स्थिति दिखाएं' की जांच करके वर्तमान ढेर स्थिति का दृश्य प्रतिनिधित्व प्राप्त कर सकते हैं। यह स्टेटस बार में एक छोटा गेज बनाएगा जिसमें एक 'ट्रैश कैन' बटन भी होगा जिसका उपयोग आप मैन्युअल कचरा संग्रह को ट्रिगर करने के लिए कर सकते हैं।

0

मैं आम तौर पर ग्रहण 512 एमबी रैम (जेवीएम के एक्सएक्सएक्स विकल्प का उपयोग करके) देता हूं और मुझे गैनीमेड के साथ कोई स्मृति समस्या नहीं है। मैंने कुछ महीने पहले दो जीबी रैम तक अपग्रेड किया था, और मैं वास्तव में इसकी सिफारिश कर सकता हूं। इससे एक बहुत बड़ा फर्क पड़ता है।

3
बस जानकारी के लिए

,

  • आप

    -Dcom.sun.management.jmxremote

अपने eclise.ini फ़ाइल, लांच ग्रहण करने के लिए जोड़ सकते हैं और उसके बाद निगरानी कर सकते हैं अपने आपके jdk अधिष्ठापन में 'jconsole.exe' के माध्यम से स्मृति उपयोग।

C:\[jdk1.6.0_0x path]\bin\jconsole.exe 

चुनें 'कनेक्शन/नई कनेक्शन /' ग्रहण द्वारा प्रयुक्त स्मृति की निगरानी के लिए

  • हमेशा नवीनतम JVM का उपयोग अपने ग्रहण शुरू करने के लिए (कि किसी अन्य जेकेएफ़ उपयोग करने के लिए आप को नहीं रोकता है ग्रहण ' ग्रहण के भीतर अपनी परियोजना)
+0

jvisualvm.exe एक ही स्थान पर पाया गया एक असम्बद्ध, चल रहे जावा प्रोग्राम से जुड़ा हो सकता है। –

32

संकलित करने के लिए मैं ग्रहण के बारे में विशेष रूप से पता नहीं है, मैं IntelliJ कि क्या आप सक्रिय रूप से इसे या नहीं का उपयोग कर रहे हैं जो भी स्मृति विकास से ग्रस्त है (का उपयोग करें!)। वैसे भी, इंटेलिजे में, मैं समस्या को खत्म नहीं कर सका, लेकिन मैंने रनटाइम वीएम विकल्पों के साथ खेलकर स्मृति वृद्धि को धीमा कर दिया। आप ग्रहण में इन्हें रीसेट करने का प्रयास कर सकते हैं और देख सकते हैं कि वे कोई फर्क पड़ता है या नहीं।

आप अपने ग्रहण फ़ोल्डर में eclipse.ini फ़ाइल में वीएम विकल्प संपादित कर सकते हैं।

मैंने पाया कि (इंटेलिजे में) कचरा कलेक्टर सेटिंग्स का सबसे अधिक प्रभाव था कि स्मृति कितनी तेजी से बढ़ता है।

मेरी सेटिंग्स हैं:

-Xms128m 
-Xmx512m 
-XX:MaxPermSize=120m 
-XX:MaxGCPauseMillis=10 
-XX:MaxHeapFreeRatio=70 
-XX:+UseConcMarkSweepGC 
-XX:+CMSIncrementalMode 
-XX:+CMSIncrementalPacing 

(अलग-अलग सेटिंग के लिए स्पष्टीकरण http://piotrga.wordpress.com/2006/12/12/intellij-and-garbage-collection/ देखें)। जैसा कि आप देख सकते हैं, मैं एक्ट्यूअल मेमोरी उपयोग की तुलना में संपादन के दौरान लंबे विरामों से बचने के लिए अधिक चिंतित हूं लेकिन आप इसे शुरुआत के रूप में उपयोग कर सकते हैं।

+1

आप मेरे नायक हैं! इस वजह से मैंने यूरोपा में वापस स्विच किया था और इन सेटिंग्स का उपयोग करके गैनीमेड फ्लाई! –

+2

इससे मुझे अपेक्षाकृत एक बड़ा अंतर आया (यहां तक ​​कि नए ग्रहण संस्करण में भी)। –

+0

नए सूर्य और ओरेकल दस्तावेज के माध्यम से जाने के बाद, मैं नए जी 1 कचरा कलेक्टर के साथ '-XX: + UseConcMarkSweepGC' लाइन को बदलने की सिफारिश करता हूं:' -XX: + अनलॉक एक्सपेरिमेंटिव ओपनऑप्शन '(आपको जेडीके 7 में इस लाइन की आवश्यकता नहीं हो सकती है, न कि निश्चित), फिर '-XX: + UseG1GC' – GKelly

1

ग्रहण ग्रहण की कितनी मेमोरी के बारे में सोचने के बजाय, आगे बढ़ें और विश्लेषण करें कि समस्या कहां है।मैं सिर्फ एक प्लगइन हो सकता है।

चेक यहाँ ब्लॉग: "analyzing memory consumption of eclipse"

सादर, मार्कस

-1

ग्रहण आम तौर पर आईडीई जिमनास्टिक के सभी प्रकार के लिए अनुमति देने के लिए स्मृति में मेटा डेटा का एक बहुत रहता है।

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

क्या कोई विशेष कारण है कि आप स्मृति उपयोग के बारे में चिंतित हैं?

1

मुझे जावा-आधारित प्रोग्राम मेमोरी खपत में समस्या थी। मैंने पाया कि यह चुने गए जेवीएम से संबंधित हो सकता है (मेरे मामले में यह था)। ग्रहण स्विच के साथ ग्रहण चलाने की कोशिश करें।

कुछ ऑपरेटिंग सिस्टम (लिनक्स डिस्ट्रोज़ में से अधिकांश मुझे विश्वास है) में, डिफ़ॉल्ट विकल्प सर्वर वीएम है, जो गुई के साथ अनुप्रयोग चलाने पर ध्यान देने योग्य अधिक स्मृति का उपभोग करेगा।

मेरे मामले में प्रारंभिक मेमोरी पदचिह्न 300 एमबी से 80 एमबी तक नीचे चला गया।

मेरी क्रैपी अंग्रेजी के लिए खेद है। मुझे उम्मीद है कि मैंने मदद की।

सभी सादर आर्कादिउज़ Jamrocha

संबंधित मुद्दे