2013-04-01 5 views
5

मेरे पास एक जावा एप्लिकेशन है जो जितना सीपीयू कर सकता है उतना सीपीयू का उपयोग करता है और इसके साथ, बहुत सारी मेमोरी (80 जीबी तक)।जावा में जीसी के लिए अधिक CPU समय दें?

मैं उस ऐप के लिए जीसी को अनुकूलित कर रहा हूं और मैं जीसी को जीसी में दिए गए प्रतिशत (60%) का उपयोग करने के लिए जेवीएम बताना चाहता हूं, अन्यथा मशीन जीसी में नहीं है, यह प्रसंस्करण और आवंटित करने की मात्रा याद।

मैं पुष्टि करते हैं कि -XX:CMSIncrementalDutyCycle=60 पैरामीटर बात मैं तलाश कर रहा हूँ और (मैं पहले से ही देखा है CMSIncrementalPacing और CMSIncrementalDutyCycleMin) क्या कोई अन्य मापदंडों जीसी करने के लिए और अधिक शक्ति दे रहा है

धन्यवाद है चाहता था एक गुच्छा!

+1

"मैं यह पुष्टि करना चाहता था कि XX: CMSIncrementalDutyCycle = 60 पैरामीटर वह थिग है जिसे मैं ढूंढ रहा हूं" - इसे आज़माएं, जीसी लॉगिंग सक्षम करें और देखें? इसके अलावा, जिज्ञासा से: यह क्या है कि आप ऐसा कर रहे हैं जो जीसी में 60% समय बिताए जाने के लिए पर्याप्त कचरा बनाता है? – millimoose

उत्तर

1

आप जीसी संग्रह के दौरान CPU उपयोग के लिए एक छत निर्धारित नहीं कर सकते।

CMSIncrementalDutyCycle नाबालिग संग्रह के बीच का समय ( [1] देखें) सेट लिए किया जाता है, तो आप कितनी बार जीसी रन पर नियंत्रण है और इस तरह परोक्ष रूप से CPU उपयोग कर सकते हैं। लेकिन, ऐसा कोई पैरामीटर नहीं है जो आपको सीधे CPU उपयोग को नियंत्रित करने की अनुमति देगा।

+1

के लिए एक अच्छा विचार नहीं है वास्तव में CMSIncrementalDutyCycle केवल इसका अप्रत्यक्ष नियंत्रण देता है। हां, मेरी पीढ़ी को युवा पीढ़ी को कम करके हल किया गया था। धन्यवाद सब एक गुच्छा। – mors

1

मुझे लगता है कि XX पुष्टि करने के लिए चाहता था: CMSIncrementalDutyCycle = 60 पैरामीटर thig मैं तलाश कर रहा हूँ और अगर वहाँ के लिए किसी भी अन्य पैरामीटर जीसी करने के लिए और अधिक शक्ति देना (मैं पहले से ही CMSIncrementalPacing देखा है और CMSIncrementalDutyCycleMin)

नहीं, आप गलत हैं। यह ध्वज नियंत्रित नहीं करेगा कि उपलब्ध सीपीयू का प्रतिशत जेवीएम के जीसी को आवंटित किया जाएगा। प्रलेखन राज्यों:

-XX:CMSIncrementalDutyCycle=<N> default: 50 

इस बार कि के बीच मामूली संग्रह समवर्ती कलेक्टर चलाने की अनुमति होने का प्रतिशत (0-100) है। यदि CMSIncrementalPacing सक्षम है, तो यह केवल प्रारंभिक मान है।

तो, यह सोचते हैं कि आप सीएमएस कलेक्टर (-XX:+UseConcMarkSweepGC) का उपयोग कर रहे हैं, तो झंडा ऊपर समय सीएमएस नाबालिग जीसी संग्रह के बीच निष्पादित करने के लिए अनुमति दी है के प्रतिशत नियंत्रित करता है।

कोई झंडा नहीं है जो आपको जीसी थ्रेड निष्पादित करने की मात्रा को सीधे नियंत्रित करने की अनुमति देता है।

+0

ठीक है। तो, जीसी के अलावा मामूली संग्रह के बीच क्या होता है? – mors

+0

आपका आवेदन निष्पादित करता है, जिट संकलन विधियों, आदि –

+0

आपको यह भी मानना ​​चाहिए कि -XX: + CMSIncrementalMode सक्षम है, जो "बड़ा" बॉक्स –

1

पहला, CMSIncreamentalDutyCycle वृद्धिशील सीएमएस एल्गोरिट पर प्रभाव डालता है (जिसे -XX:+CMSIncrementalMode द्वारा सक्षम किया जाना चाहिए)। बढ़ते मोड आपके काम के लिए किसी भी तरह से बुरा है।

दूसरा, आप जीसी कार्यों द्वारा उपभोग किए गए सीपीयू कोर की संख्या सीमित कर सकते हैं।

  • -XX:ParallelGCThreads=N बंद करो-विश्व चरणों
  • के लिए कोर की संख्या सेट
  • समवर्ती कार्यों के लिए कोर (केवल सीएमएस के लिए) की -XX:ConcGCThreads=N सेट संख्या

आप अधिक जीसी संबंधित विकल्प here पा सकते हैं।

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