ग्रहण के लिए सबसे अच्छी JVM सेटिंग्स क्या हैं? [बन्द है]


315

ग्रहण चलाने के लिए आपको सबसे अच्छी JVM सेटिंग क्या मिली?


8
eclipse.iniहेलिओस 3.6 के लिए नई और बेहतर सेटिंग्स यहाँ हैं (नीचे, एक नए उत्तर में): stackoverflow.com/questions/142357/…
VonC

6
यह आश्चर्यजनक है कि रचनात्मक के रूप में बंद किए गए प्रश्न की इतनी उच्च रेटिंग नहीं है ...
9

1
यह सवाल तब पूछा गया जब 2008 में इस तरह के एक प्रश्न का सबसे हालिया उत्तर था eclipsezone.com/eclipse/forums/t207s.html । उत्तर सेट में वृद्धि हुई है क्योंकि ग्रहण और जावा के नए संस्करण जारी किए गए हैं, बाद के अपडेट ने उत्तरों को ताज़ा रखा है। सवाल बंद करने से जवाब बासी हो जाएंगे। जिस तरह से मैं इस सवाल को फिर से समझने के लिए सोच सकता हूं वह इसे संस्करण को विशिष्ट बनाने के लिए होगा, जो मुझे लगता है कि यह बदतर है क्योंकि यह मूल रूप से एक ही समस्या का जवाब देने के लिए कई प्रश्न पैदा करेगा
क्रेग एंगस

10
सहमत - इस तरह के सवालों को बंद करना पागलपन है - पागलपन मैं आपको बताता हूं - इस तरह के सवाल साइट पर सबसे उपयोगी और दिलचस्प हैं!
लुइगी प्लिंज

3
बंद करने के कारण के अनुसार, "हम आम तौर पर तथ्यों, संदर्भों या विशिष्ट विशेषज्ञता को शामिल करने के लिए उत्तर की उम्मीद करते हैं"। मुझे लगता है कि इस सवाल को बंद करना एक खिंचाव है। आइए हम सेंसरशिप शक्तियों का उपयोग करते हुए सावधान रहें। मैं कहूंगा कि संदेह की स्थिति में, "ज्ञान को मुक्त होने दें" और खोलना बेहतर है।
लूसीक्लोराडो

जवाबों:


315

यह फिर से वर्ष का समय है: "eclipse.ini 3 ले लो" सेटिंग्स वापस हड़ताल!

ग्रहण हेलियोस 3.6 और 3.6.x सेटिंग्स

alt text http://www.eclipse.org/home/promotions/friends-helios/helios.png

के लिए सेटिंग्स के बाद ग्रहण गेनीमेड 3.4.x और ग्रहण गैलीलियो 3.5.x , यहाँ एक "अनुकूलित" पर एक गहन नज़र है eclipse.ini ग्रहण Helios 3.6.x के लिए सेटिंग्स फ़ाइल:

( "अनुकूलित" द्वारा, मेरा मतलब है कि काम पर हमारे भद्दे वर्कस्टेशन पर पूर्ण-ग्रहण ग्रहण करने में सक्षम है, 2002 से कुछ पुराने P4 2Go RAM और XPSp3 के साथ। लेकिन मैंने विंडोज 7 पर भी उन्हीं सेटिंग्स का परीक्षण किया है )

Eclipse.ini

वैकल्पिक शब्द

चेतावनी : गैर-विंडोज़ प्लेटफ़ॉर्म के लिए, सूर्य के मालिकाना विकल्प का -XX:MaxPermSizeउपयोग करें जो कि ग्रहण स्वामित्व विकल्प के बजाय है --launcher.XXMaxPermSize
अर्थात: जब तक आप नवीनतम jdk6u21 बिल्ड 7 का उपयोग नहीं कर रहे हैं । नीचे Oracle अनुभाग देखें।

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/eclipse_addons

नोट: अपनी पसंद के किसी बाहरी डायरेक्टरी को
अपनाएं p2.reconciler.dropins.directory
इस SO उत्तर को देखें । यह विचार किसी भी ग्रहण की स्थापना से स्वतंत्र रूप से एक निर्देशिका में नए प्लगइन्स को छोड़ने में सक्षम है।

निम्न अनुभाग इस eclipse.iniफ़ाइल में क्या हैं, इसका विस्तार करते हैं ।


खूंखार ओरेकल JVM 1.6u21 (प्री बिल्ड 7) और एक्लिप्स क्रैश

एंड्रयू नीफर ने मुझे इस स्थिति के लिए सचेत किया, और एक गैर-मानक vm तर्क ( ) के बारे में एक ब्लॉग पोस्ट लिखा, और -XX:MaxPermSizeअन्य विक्रेताओं से vms को शुरू नहीं करने का कारण बन सकता है।
लेकिन उस विकल्प का ग्रहण संस्करण ( --launcher.XXMaxPermSize) नए JDK (6u21) के साथ काम नहीं कर रहा है, जब तक कि आप 6u21 बिल्ड 7 का उपयोग नहीं कर रहे हैं, नीचे देखें)।

अंतिमसमाधान विकी विकी पर है , और हेलीओस के लिए विंडोज पर 6u21 प्री बिल्ड 7 केवल:

(Eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503

बस। यहां ट्वीक करने की कोई सेटिंग नहीं (फिर से, केवल 6u21 प्री बिल्ड 7 के साथ विंडोज पर हेलियोस के लिए )।
गैर-विंडोज प्लेटफ़ॉर्म के लिए, आपको सूर्य के मालिकाना विकल्प पर वापस जाने की आवश्यकता है -XX:MaxPermSize

समस्या एक प्रतिगमन आधारित है: JVM पहचान java.exe में Oracle रीब्रांडिंग के कारण विफल हो जाती है , और ग्रहण पर बग 319514 को ट्रिगर किया ।
एंड्रयू ने बग 320005--launcher.XXMaxPermSize: isSunVM का ख्याल रखा - [लांचर] ओरेकल के लिए सही लौटना चाहिए , लेकिन यह केवल हेलिओस 3.6.1 के लिए होगा।
फ्रांसिस अप्टन , एक और ग्रहण कमल , सभी स्थिति को दर्शाता है

अद्यतन u21b7, जुलाई, 27 वीं :
ओरेकल ने अगले जावा 6 रिलीज के लिए बदलाव को फिर से प्राप्त किया है और इसे जेकेके 7 तक फिर से लागू नहीं करेगा
यदि आप jdk6u21 बिल्ड 7 का उपयोग करते हैं , तो आप (गैर-मानक विकल्प) के --launcher.XXMaxPermSizeबजाय (ग्रहण विकल्प) पर वापस लौट सकते हैं -XX:MaxPermSizeऑटो का पता लगाने सी लांचर शिम में क्या हो रहा अभी भी "के लिए दिखेगा " स्ट्रिंग, लेकिन 6u21b7 साथ, यह अब काम करेगा - फिर से।
eclipse.exeSun Microsystems

अभी के लिए, मैं अभी भी -XX:MaxPermSizeसंस्करण रखता हूं (क्योंकि मुझे नहीं पता कि हर कोई कब सही JDK को लॉन्च करेगा )।


निहितार्थ `-स्टार्टअप` और` -लंचर.लिफ्ट``

पिछली सेटिंग्स के विपरीत, उन मॉड्यूल के लिए सटीक मार्ग अब सेट नहीं है, जो सुविधाजनक है क्योंकि यह अलग-अलग ग्रहण 3.6.x रिलीज के बीच भिन्न हो सकता है:

  • स्टार्टअप: यदि निर्दिष्ट नहीं है, तो निष्पादन योग्य org.eclipse.equinox.launcherउच्चतम संस्करण के साथ बंडल के लिए प्लगइन्स निर्देशिका में दिखेगा ।
  • लॉन्चर.लिफ्ट: यदि निर्दिष्ट नहीं किया गया है, तो उच्चतम संस्करण के साथ pluginsउपयुक्त org.eclipse.equinox.launcher.[platform]टुकड़े के लिए निर्देशिका में निष्पादन योग्य दिखता है और eclipse_*अंदर से साझा पुस्तकालय का उपयोग करता है।

JDK6 का उपयोग करें

JDK6 को अब स्पष्ट रूप से ग्रहण शुरू करने की आवश्यकता है:

-Dosgi.requiredJavaVersion = 1.6

यह एसओ प्रश्न मैक ओएस पर विकास के लिए एक सकारात्मक घटना की रिपोर्ट करता है।


+ UnlockExperimentalVMOptions

निम्नलिखित विकल्प सूर्य JVM के कुछ प्रायोगिक विकल्पों का हिस्सा हैं।

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

उन्हें इस ब्लॉग पोस्ट में संभावित रूप से ग्रहण की गति बढ़ाने की सूचना दी गई है । यहां
सभी JVM विकल्प देखें और आधिकारिक जावा हॉटस्पॉट विकल्प पृष्ठ में भी
नोट: उन विकल्पों की विस्तृत सूची रिपोर्ट जो UseFastAccessorMethodsडिफ़ॉल्ट रूप से सक्रिय हो सकती हैं।

"अपना JVM अपडेट करें" भी देखें :

एक अनुस्मारक के रूप में, G1, JDK 7 की तैयारी में नया कचरा संग्रहकर्ता है, लेकिन पहले ही इसका उपयोग U17 के संस्करण 6 में किया गया था।


कमांड लाइन से ग्रहण में फाइलें खोलना

एंड्रयू Niefer से ब्लॉग पोस्ट देखें इस नए विकल्प की रिपोर्टिंग:

--launcher.defaultAction
openFile

यह लॉन्चर को बताता है कि अगर इसे एक कमांड लाइन के साथ कहा जाता है जिसमें केवल तर्क होते हैं जो " -" से शुरू नहीं होते हैं , तो उन तर्कों को मान लिया जाना चाहिए जैसे कि उन्होंने " --launcher.openFile" का पालन ​​किया ।

eclipse myFile.txt

यह उस तरह की कमांड लाइन है जिसे लॉन्चर को विंडोज़ पर प्राप्त होगा जब आप एक फाइल पर डबल क्लिक करते हैं जो कि ग्रहण से जुड़ी होती है, या आप फ़ाइलों का चयन करते हैं और " Open With" या Send To"एक्लिप्स " चुनते हैं ।

वर्तमान कार्य निर्देशिका के खिलाफ सापेक्ष पथ पहले हल किया जाएगा, और दूसरा ग्रहण कार्यक्रम निर्देशिका के खिलाफ।

संदर्भ के लिए बग 301033 देखें । मूल रूप से बग 4922 (अक्टूबर 2001, 9 साल बाद तय)।


P2 और Unsigned Dialog Prompt

यदि आप अपने कई प्लगइन्स की स्थापना के दौरान इस संवाद बॉक्स से थक चुके हैं:

वैकल्पिक शब्द

, अपने में जोड़ें eclipse.ini:

-Declipse.p2.unsignedPolicy=allow

क्रिस Aniszczy , और बग रिपोर्ट 235526 से इस ब्लॉग पोस्ट को देखें ।

मैं यह कहना चाहता हूं कि सुरक्षा अनुसंधान इस तथ्य का समर्थन करता है कि कम संकेत बेहतर हैं।
लोग उन चीजों को नजरअंदाज कर देते हैं जो किसी चीज के प्रवाह में पॉप अप हो जाती हैं जो वे करना चाहते हैं।

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

---------- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif

अतिरिक्त विकल्प

वे विकल्प सीधे eclipse.iniऊपर नहीं हैं , लेकिन जरूरत पड़ने पर काम में आ सकते हैं।


विंडोज 7 पर `user.home` मुद्दा

जब ग्रहण शुरू होता है, तो यह इसकी कीस्टोर फ़ाइल (जहाँ पासवर्ड रखे जाते हैं), एक फ़ाइल में स्थित पढ़ेगा user.home
यदि किसी कारण user.homeसे जो पूर्ण-पथ के लिए अपने आप को ठीक से हल नहीं करता है, तो ग्रहण शुरू नहीं होगा।
प्रारंभ में इस SO प्रश्न में उठाया गया है , यदि आप इसे अनुभव करते हैं, तो आपको कीस्टोर फ़ाइल को एक स्पष्ट पथ पर फिर से परिभाषित करने की आवश्यकता है (प्रारंभ में हल करने के लिए और अधिक user.home नहीं)

अपने में जोड़ें eclipse.ini:

-eclipse.keyring 
C:\eclipse\keyring.txt

यह बग 300577 द्वारा ट्रैक किया गया है , यह इस अन्य एसओ प्रश्न में हल किया गया है ।


डिबग मोड

रुको, ग्रहण में एक से अधिक सेटिंग फ़ाइल है।
यदि आप अपने eclipse.iniविकल्प में जोड़ें :

-debug

, आप डिबग मोड को सक्षम करते हैं और एक्लिप्स एक अन्य सेटिंग फ़ाइल की तलाश करेगा : एक .optionsफ़ाइल जहां आप कुछ OSGI विकल्प निर्दिष्ट कर सकते हैं।
और यह बहुत अच्छा होता है जब आप ड्रॉपइंस फ़ोल्डर के माध्यम से नए प्लगइन्स जोड़ रहे होते हैं।
अपने .options में जोड़ें निम्नलिखित सेटिंग्स फ़ाइल करें, जैसा कि इस ब्लॉग पोस्ट " ड्रॉपिन्स डायग्नोसिस " में वर्णित है :

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true

P2 आपको सूचित करेगा कि dropins/फ़ोल्डर में क्या बंडल पाए गए थे , क्या अनुरोध उत्पन्न हुआ था, और स्थापना की योजना क्या है। शायद यह विस्तृत विवरण नहीं है कि वास्तव में क्या हुआ था, और क्या गलत हुआ था, लेकिन यह आपको मजबूत जानकारी देनी चाहिए कि कहां से शुरू करें:

  • क्या योजना में आपका बंडल था?
  • क्या यह स्थापना की समस्या थी (P2 दोष)
  • या शायद यह सिर्फ अपनी सुविधा को शामिल करने के लिए इष्टतम नहीं है?

यह बग 264924 से आता है - [टोह लेने वाला] बूंदों की समस्याओं का कोई निदान नहीं , जो अंत में निम्नलिखित मुद्दे को हल करता है जैसे:

Unzip eclipse-SDK-3.5M5-win32.zip to ..../eclipse
Unzip mdt-ocl-SDK-1.3.0M5.zip to ..../eclipse/dropins/mdt-ocl-SDK-1.3.0M5

यह एक समस्याग्रस्त कॉन्फ़िगरेशन है क्योंकि OCL EMF पर निर्भर करता है जो गायब है।
3.5M5 इस समस्या का कोई निदान प्रदान नहीं करता है।

ग्रहण शुरू करें।
कोई स्पष्ट समस्या नहीं। एरर लॉग में कुछ भी नहीं।

  • Help / About / Pluginविवरण दिखाता है org.eclipse.ocl.doc, लेकिन नहीं org.eclipse.ocl
  • Help / About / Configurationविवरण में कोई (नैदानिक) उल्लेख नहीं है org.eclipse.ocl
  • Help / Installation / Information Installed Softwareका कोई उल्लेख नहीं है org.eclipse.ocl

अच्छा त्रुटि मार्कर कहां हैं?


मेनिफेस्ट क्लासपाथ

इस ब्लॉग पोस्ट को देखें :

  • गैलीलियो (उर्फ एक्लिप्स 3.5) में, JDT ने प्रोजेक्ट के बिल्ड पाथ में जोड़े गए लाइब्रेरी में मैनिफ़ेस्ट क्लासपाथ को हल करना शुरू किया। यह काम करता है कि क्या लाइब्रेरी को सीधे प्रोजेक्ट के निर्माण पथ में जोड़ा गया था या क्लासपाथ कंटेनर के माध्यम से, जैसे कि जेडीटी द्वारा प्रदान की गई उपयोगकर्ता लाइब्रेरी सुविधा या किसी तीसरे पक्ष द्वारा कार्यान्वित किया गया।
  • हेलिओस में, क्लासपैथ के कंटेनरों को प्रकट करने के लिए इस व्यवहार को बदल दिया गया था।

इसका मतलब है कि आपकी कुछ परियोजनाएं अब हेलिओस में संकलित नहीं हो सकती हैं।
यदि आप गैलीलियो व्यवहार में वापस आना चाहते हैं, तो जोड़ें:

-DresolveReferencedLibrariesForContainers=true

संदर्भ के लिए बग 305037 , बग 313965 और बग 313890 देखें ।


IPV4 स्टैक

यह SO प्रश्न संभावित अद्यतन का उल्लेख करता है जब प्लग-इन अपडेट साइटों तक पहुंच नहीं होती है:

-Djava.net.preferIPv4Stack=true

केवल आपके कॉन्फ़िगरेशन में मदद करने के मामले में यहाँ उल्लेख किया गया है।


JVM1.7x64 संभावित अनुकूलन

यह लेख रिपोर्ट:

रिकॉर्ड के लिए, 1.7 x64 JVM n विंडोज के साथ अपने बेंच टेस्ट के लिए मुझे अब तक मिले सबसे तेज विकल्प हैं:

-Xincgc 
-XX:-DontCompileHugeMethods 
-XX:MaxInlineSize=1024  
-XX:FreqInlineSize=1024 

लेकिन मैं अभी भी इस पर काम कर रहा हूं ...


इस लिंक के अनुसार, oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms , आपको -XX का उपयोग करने की आवश्यकता है: + UseConcMarkSweepGC का उपयोग करने के लिए -XX: + CMSIncrementalMode। जो आपके ऊपर के उदाहरण से गायब है। यदि हम G1 GC का उपयोग करते हैं, तो क्या मुझे सही है, हमें CMSIncrementalMode की आवश्यकता नहीं है?
RuntimeException

1
अरे, G1GC एक मैक पर एक आपदा है। यह पूरी मशीन को खाती है, रिबूट की आवश्यकता होती है।
bmargulies

4
@VonC: मेरे लिए HORRENDOUS मंदी का -XX:CompileThreshold=5कारण बनता है। इस विकल्प से छुटकारा पाने के लिए> 1 मिनट से मेरे ग्रहण स्टार्टअप के समय को घटाकर 17 सेकंड कर दिया गया !! यह उल्लेख करने के लिए नहीं कि आईडीई सामान्य रूप से कितना धीमा था। इस लिंक को देखें
TrinitronX

3
@ ट्रिनिट्रॉनएक्स: (और वास्तव में हर कोई), -XX:CompileThreshold=5बहुत कम मूल्य (डिफ़ॉल्ट = 10000) है। यह मान संकलित करने से पहले विधि इनवोकेशन / शाखाओं की संख्या का प्रतिनिधित्व करता है। बहुत कम मान आपके CodeCache को समय से पहले भरने का कारण बनेगा और कंसोल रिपोर्ट कर सकता है: CodeCache is full. Compiler has been disabled कंपाइलर के निष्क्रिय हो जाने के बाद आप ऐप में धीमेपन को नोटिस करेंगे। इसे ठीक करने के दो तरीके हैं, 1. उपयोग -XX:CompileThreshold=1000(इस नंबर को ठीक करें ) या 2. कोड कैश साइज़ को बढ़ाने की कोशिश करें -XX:ReservedCodeCacheSize=64m(डिफ़ॉल्ट 32 मी से दोगुना)
द्रुपद पंचाल

4
लाइनक्स उपयोग के लिए /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so jvm स्थान के लिए
r155h

76

ग्रहण गैलीलियो 3.5 और 3.5.1 सेटिंग्स

- (ग्रहण 3.5.x, देखने के गैलीलियो के साथ वर्तमान में (नवंबर 2009), मैं विकल्पों में से निम्न कॉन्फ़िगरेशन सेट jdk6 अद्यतन 17 के साथ परीक्षण कर रहा हूँ 3.4 के लिए नीचे दिए गए या के लिए ऊपर Helios 3.6.x :)
निश्चित रूप से (, संबंधित पथ अनुकूलन इस eclipse.ini को आपके सेटअप के सही रास्तों पर प्रस्तुत करें)

नोट: eclipse3.5 के लिए , द्वारा प्रतिस्थापित startupऔर launcher.libraryलाइनों:

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

eclipse.ini 3.5.1

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins

अधिक जानकारी के लिए ऊपर मेरा मूल उत्तर भी देखें ।

परिवर्तन (जुलाई 2009 से)

  • लांचर को संदर्भित करता है और रूपरेखा को नहीं
  • साझा प्लगइन्स: org.eclipse.equinox.p2.reconciler.dropins.directoryविकल्प।
  • गैलीलियो कार्यक्षेत्र या वीएम के लिए पूरी तरह से सापेक्ष पथों का समर्थन करता है (एक ग्रहण स्थापना से दूसरे को संशोधित करने से बचें, यदि, निश्चित रूप से, आपका जेवीएम और कार्यक्षेत्र समान रहता है)
    इससे पहले, उन रिश्तेदार पथों को पूर्ण रूप से फिर से लिखा जा रहा है जब ग्रहण स्वयं लॉन्च हुआ। ...
  • आप अपने ग्रहण निर्देशिका के अंदर जावा JDK इंस्टॉलेशन की JRE निर्देशिका को भी कॉपी कर सकते हैं

चेतावनियां

वास्तव में JDK से संबंधित उपेक्षित विराम बिंदुओं के साथ एक बग था । ग्रहण शुरू करने के
लिए JDK6u16 या अधिक हाल ही में उपयोग करें (आप तब ग्रहण कर सकते हैं जितने JDK आप ग्रहण के भीतर संकलित करना चाहते हैं : ऐसा इसलिए नहीं है क्योंकि आप JDK6 के साथ एक ग्रहण लॉन्च करते हैं, आपको उसी JDK के साथ संकलन करना होगा)।

मैक्स

के उपयोग पर ध्यान दें:

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

जैसा कि ग्रहण विकी में प्रलेखित है ,

ग्रहण 3.3 लांचर को एक नए तर्क का समर्थन करता है --launcher.XXMaxPermSize:।
यदि VM का उपयोग किया जा रहा है, एक Sun VM है और पहले से ही -XX:MaxPermSize=VM तर्क नहीं है, तो लांचर स्वचालित रूप -XX:MaxPermSize=256mसे उपयोग किए जा रहे VM तर्कों की सूची में जोड़ देगा ।
3.3 लांचर केवल विंडोज पर Sun VMs की पहचान करने में सक्षम है।

जैसा कि इस प्रविष्टि में विस्तृत है :

सभी vms इस -XX:MaxPermSizeतर्क को स्वीकार नहीं करते कि ऐसा क्यों है। सूरज vms की पहचान करने में समस्याएँ हो सकती हैं (या नहीं भी)।
नोट: ग्रहण 3.3.1 में एक बग है जहां लांचर सूर्य वीएम का पता नहीं लगा सकता है, और इसलिए सही PermGen आकार का उपयोग नहीं करता है। ऐसा लगता है कि यह 3.3.0 के लिए मैक ओएस एक्स पर एक ज्ञात बग हो सकता है ।
यदि आप इनमें से किसी भी प्लेटफ़ॉर्म संयोजन का उपयोग कर रहे हैं, तो -XXध्वज को eclipse.iniऊपर वर्णित अनुसार जोड़ें।

टिप्पणियाँ:

  • " 384m" लाइन =384mVM तर्क के " " भाग में बदल जाती है, यदि VM " m" पर संवेदनशील है , तो यह तर्क है।
  • " --launcher." उपसर्ग, यह निर्दिष्ट करता है कि तर्क को लांचर द्वारा ही उपभोग किया जाता है और अनुप्रयोग तर्कों के साथ नाम टकराव से बचने के लिए लांचर विशिष्ट तर्कों में जोड़ा गया था। (अन्य उदाहरण हैं --launcher.library, --launcher.suppressErrors)

-vmargs -XX:MaxPermSize=384mभाग तर्क वी एम को सीधे पारित कर दिया, लांचर पूरी तरह से दरकिनार और वीएम विक्रेता पर कोई चेक किया जाता है।


मुझे नवीनतम ग्रहण 3.5x64 रिलीज़ के लिए इसके साथ कुछ समस्याएँ थीं: --launcher.library plugins / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519 -startup plugins / org.eclipse.equinox.launcher_1 .0.200.v20090520.jar भी मुझे m2eclipse प्लगइन के लिए एक jdk JAVA_HOME / bin / javaw का उपयोग करना था। वरना ये कमाल का कमाल है।
नाथन फेगर

क्या ये दोनों एक ही काम नहीं कर रहे हैं? "- Luncher.XXMaxPermSize 384m" और "-XX: MaxPermSize = 128m"
इगोर Zinov'yev

@ आईओआर ज़िनोव'येव: यह थोड़ा बेमानी है, लेकिन दोनों उपयोगी हो सकते हैं, यह प्लेटफॉर्म और ग्रहण संस्करण पर निर्भर करता है। मैंने उन्हें एक ही मूल्य पर रीसेट कर दिया, और उन सेटिंग्स के बारे में थोड़ा दस्तावेज के साथ अपना जवाब पूरा किया।
VonC

यह भी देखें stackoverflow.com/questions/2204173/…
VONC

यदि आप हमेशा नवीनतम और महानतम वीएम का उपयोग करना चाहते हैं, तो 1.6 का उपयोग करके "-Dosgi.requiredJavaVersion = 1.5" तर्क क्यों नहीं है?
टोनी आर

63

ग्रहण गेनीमेड 3.4.2 सेटिंग्स


अधिक हाल की सेटिंग्स के लिए, ऊपर गैलिलियो 3.5 सेटिंग्स देखें ।


JDK

मेरी राय में, हमेशा सबसे अच्छी JVM सेटिंग , जिसमें आप पा सकते हैं नवीनतम JDK शामिल हैं (इसलिए अभी तक, jdk1.6.0_b07 b16 तक, b14 और b15 को छोड़कर )

eclipse.ini

यहां तक ​​कि उन कम मेमोरी सेटिंग्स के साथ, मैं अपने पुराने (2002) डेस्कटॉप पर JIO RAM के साथ बड़े जावा प्रोजेक्ट (एक वेब सर्वर के साथ) चला सकता हूं।

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.sun.management.jmxremote

देखें GKelly की तो जवाब और पिओट्र Gabryanczyk के ब्लॉग प्रविष्टि नए विकल्पों के बारे में अधिक जानकारी के लिए।

निगरानी

आप लॉन्चिंग पर भी विचार कर सकते हैं:

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

जैसा कि स्मृति उपभोग के बारे में पिछले प्रश्न में कहा गया था


1
क्या है -Xssv2m के लिए, जब मैं इसे vm सेटिंग्स में शामिल करता हूं, तो यह लॉन्च नहीं होगा, JVM सेटिंग्स के लिए डॉक्स पर एक नजर थी, लेकिन इसे नहीं पाया
क्रेग एंगस

सही ... यह एक टाइपो था: Xss2m, न कि Xssv2m: -Xss स्टैक का आकार निर्धारित करता है: -Xss1024k। यदि स्टैक स्थान बहुत छोटा है, तो अंततः आपको एक अपवाद वर्ग java.lang.StackOverflowError (यहाँ एक पौराणिक त्रुटि संदेश ;-)) दिखाई देगा
VONC

अंत में सेटिंग्स के दूसरे सेट का उपयोग करने के लिए गोल हो गया और आश्चर्यचकित था कि वे कितनी अच्छी तरह काम करते हैं!
क्रेग एंगस

अब थोड़ी देर के लिए सेटिंग्स का उपयोग करने का मौका मिला है, ग्रहण व्यर्थ लगता है, लेकिन चींटी का निर्माण धीमा लगता है ???
क्रेग एंगस

@ क्रेग एंगस: अजीब, आप किस संस्करण का उपयोग कर रहे हैं? और कौन सा चींटी संस्करण इसमें शामिल है?
VONC

20

ग्रहण इंडिगो 3.7.2 सेटिंग्स (64 बिट लिनक्स)

सूर्य / ओरेकल जावा संस्करण "1.6.0_31" और ग्रहण 3.7 के लिए सेटिंग x86-64 लिनक्स पर चल रहा है:

-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

ध्यान दें कि यह ढेर के लिए केवल 200 एमबी और गैर-हीप के लिए 150 एमबी का उपयोग करता है। यदि आप विशाल प्लगइन्स का उपयोग कर रहे हैं, तो आप "-Xmx200m" और "-XX: MaxPermSize = 150m" दोनों सीमाएँ बढ़ाना चाह सकते हैं।

इन झंडों के लिए प्राथमिक अनुकूलन लक्ष्य सभी मामलों में विलंबता को कम करने और माध्यमिक अनुकूलन लक्ष्य के रूप में स्मृति उपयोग को कम करने के लिए किया गया है।


मेरे लिए काल्पनिक रूप से काम करता है (हालांकि मैंने स्मृति से संबंधित सेटिंग्स के लिए मूल्यों को दोगुना कर दिया है, यह अभी भी कम है और तेजी से फफोला हो रहा है!)
अकाटॉ

आपके पास दोनों -XX: + UseConcMarkSweepGC और -XX: + UseParNewGC हैं। क्यों? मुझे नहीं लगता कि आप दोनों कचरा संग्रहकों का उपयोग कर सकते हैं, और मुझे यकीन नहीं है कि आखिरकार कौन सा उपयोग किया जाता है।
हरमन

मुझे लगा कि -XX: + UseConcMarkSweepGC पुरानी पीढ़ी के कचरा संग्रह के लिए है और -XX: + UseParNewGC का उपयोग एडन कचरा संग्रह के लिए किया जाता है।
मिकको रैंटलैनेन

इन्हें भी देखें: blogs.oracle.com/jonthecollector/entry/our_collectors
Mikko Rantalainen

3
प्रत्येक विकल्प और विकल्प के लिए प्रत्येक तर्क अपनी लाइन पर होना चाहिए।
जोश क्लीम

14

-showlocation

ग्रहण को दो बार चलाना आसान बनाने के लिए, और जानें कि आप किस कार्यक्षेत्र के साथ काम कर रहे हैं

ग्रहण 3.6 के लिए क्या दिखाना है यह निर्दिष्ट करने के लिए एक प्राथमिकता विकल्प जोड़ता है Workspace name (shown in window title)-showlocation तीन कारणों से बेहतर काम :

  1. आपको इसे प्रभावित करने के लिए ग्रहण को पुनः आरंभ करने की आवश्यकता नहीं है।
  2. आप एक छोटा कोड चुन सकते हैं।
  3. यह पहले, परिप्रेक्ष्य और आवेदन नाम से पहले दिखाई देता है।

9

यदि आप jdk6 अपडेट 14 के साथ जा रहे हैं, तो मैं सुझाव दूंगा कि G1 कचरा संग्राहक का उपयोग किया जाए जो प्रदर्शन में मदद करता है।

ऐसा करने के लिए, इन सेटिंग्स को हटा दें:

-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing

और उन्हें इनसे प्रतिस्थापित करें:

-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC


9

आप लिनक्स + सूर्य JDK / JRE उपयोग कर रहे हैं 32bits , बदलने के लिए "-vm":

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

आप लिनक्स + सूर्य JDK / JRE उपयोग कर रहे हैं 64bits , बदलने के लिए "-vm":

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

यह मेरे लिए Ubuntu 8.10 और 9.04 पर ठीक काम कर रहा है


क्या यह JDK को डिफ़ॉल्ट वातावरण के रूप में ग्रहण करने के लिए है?
थोरबजोरन रेव एंडरसन

इसका उपयोग डिफ़ॉल्ट वातावरण के रूप में एक विशिष्ट / अलग JDK का उपयोग करके ग्रहण करने के लिए किया जा सकता है।
गिल्बर्टो ओलम्पियो

7

आप JRockit के साथ दौड़ने का भी प्रयास कर सकते हैं । यह JVM सर्वरों के लिए अनुकूलित है, लेकिन कई लंबे समय से चलने वाले क्लाइंट एप्लिकेशन, जैसे IDE's, JRockit पर बहुत अच्छी तरह से चलते हैं। ग्रहण कोई अपवाद नहीं है। JRockit के पास परमिट-स्पेस नहीं है इसलिए आपको इसे कॉन्फ़िगर करने की आवश्यकता नहीं है।

यह संभव है कि यूआई को रोकते हुए लंबी gc पॉज़ से बचने के लिए एक पॉज़ टाइम टारगेट (ms) सेट किया जाए।

-showsplash
org.eclipse.platform
-vm
 C:\jrmc-3.1.2-1.6.0\bin\javaw.exe 
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20

मैं आमतौर पर सेटिंग -Xmx और -Xms को परेशान नहीं करता और JRockit को ढेर को बढ़ने देता हूं क्योंकि यह आवश्यक है। यदि आप JRockit के साथ अपना ग्रहण एप्लिकेशन लॉन्च करते हैं, तो आप JRockit मिशन नियंत्रण उपकरण सूट का उपयोग करके अपने एप्लिकेशन में मॉनिटरिंग, प्रोफ़ाइल और मेमोरी लीक का पता लगा सकते हैं। आप इस अपडेट साइट से प्लगइन्स डाउनलोड करें । ध्यान दें, केवल ग्रहण 3.3 और ग्रहण 3.4 के लिए काम करता है


मैंने पिछले दिनों जेकरिट पर ग्रहण लगाया है और बहुत अच्छी तरह से भागा है
क्रेग एंगस

5

यहाँ i7 2630M 16GB रैम लैपटॉप पर चलने वाले मेरे ग्रहण के लिए मेरी अपनी सेटिंग है, यह सेटिंग एक सप्ताह के लिए उपयोग की जा रही है, एक भी दुर्घटनाग्रस्त हुए बिना, और ग्रहण 3.7 आसानी से चल रहा है।

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx4096m 
-XX:MaxPermSize=256m

गणना: विन 7 x64 के लिए

  • Xms = भौतिक मेमोरी / 16
  • एक्सएमएक्स = भौतिक मेमोरी / 4
  • MaxPermSize = डिफ़ॉल्ट मान के समान, जो 256 मी है

वाह 16 जी लैपटॉप? मैं उत्सुक हूँ। वह एक System76 है? : डी
फिल

5
-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Dcom.sun.management.jmxremote
-Declipse.p2.unsignedPolicy=allow

और इन सेटिंग ने मेरे लिए एक आकर्षण की तरह काम किया है। मैं OS X10.6, ग्रहण 3.7 इंडिगो, JDK1.6.0_24 चला रहा हूं


धन्यवाद, इससे मेरे प्रदर्शन में काफी हद तक (समान सेटअप) मदद मिली। लेकिन मैंने अधिकतम ढेर का आकार 1024 एमबी तक बढ़ा दिया।
जेफ इवांस

4

मेरी अपनी सेटिंग्स (जावा 1.7, 1.6 के लिए संशोधित):

-vm
C:/Program Files (x86)/Java/jdk1.7.0/bin
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn100m
-Xss1m
-XgcPrio:deterministic
-XpauseTarget:20
-XX:PermSize=400M
-XX:MaxPermSize=500M
-XX:CompileThreshold=10
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+DoEscapeAnalysis
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts
-Xms512m
-Xmx512m

3

ग्रहण को बहुत सारी रैम पसंद है। कम से कम -Xmx512M का उपयोग करें। अधिक उपलब्ध है।


3

यदि आप मुझे पसंद करते हैं और 1.6 के वर्तमान ओरेकल रिलीज के साथ समस्या थी, तो आप अपने जेडीके या सेट को अपडेट करना चाह सकते हैं

-XX: MaxPermSize
। अधिक जानकारी यहाँ उपलब्ध है: http://java.dzone.com/articles/latest-java-update-fixes


2

XX: + UseParallelGC कि यह अब तक का सबसे भयानक विकल्प है !!!


1

-vm
C: \ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jmm.ll

यह निर्दिष्ट करने के लिए कि आप किस जावा संस्करण का उपयोग कर रहे हैं, और जावा प्रक्रिया शुरू करने के बजाय डीएलई का उपयोग करें


0

यहाँ मैं क्या उपयोग कर रहा हूँ (हालांकि मैं उन्हें सेटिंग्स फ़ाइल के बजाय शॉर्टकट में है):

eclipse.exe -showlocation -vm "C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe" -vmargs -Xms256M -Xmx768M -XX: +ParbridGC -XX: MaxPermSize = 128M

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