2011-08-01 27 views
28

बढ़ाने के लिए साइड इफेक्ट क्या कोई अधिकतम maxpermsize और अधिकतम ढेर आकार बढ़ाने के लिए दुष्प्रभावों को समझा सकता है?maxpermsize और अधिकतम ढेर आकार

मुझे पता है कि कभी-कभी, हम एक्स्टोमेमरी मुद्दे में भागते समय -Xmx बढ़ाते हैं। लेकिन मैं बस सोच रहा हूं कि क्या कोई दुष्प्रभाव है जिसे मुझे ध्यान में रखना चाहिए जब हम -Xmx बढ़ाते हैं। और maxpermsize बढ़ाना कैसे रनटाइम को प्रभावित करता है?

धन्यवाद।

उत्तर

80

लघु जवाब

जावा ढेर आकार दोहरीकरण, कचरा संग्रहण रुक जाता है के लिए प्रतीक्षा समय दोगुना हो जाता है, कि वर्तमान JVM प्रौद्योगिकियों के साथ कई सेकंड के हो जाते हैं जब ढेर जीबी क्रम में है। ऐसा लगता है कि नए रिलीज Java 7 is going to change that

लांग जवाब

MaxPermSize स्थायी पीढ़ी ढेर के लिए अधिकतम आकार है, एक ढेर है कि कक्षाओं की बाइट कोड रखती है और वस्तु वास्तविक उदाहरणों वाले ढेर से अलग रखा जाता है। वेब अनुप्रयोगों के मामले में ध्यान में रखना एक बात यह है कि प्रत्येक गर्म पुन: तैनाती में यह स्मृति उपयोग समान कक्षाओं की कई प्रतियों के साथ बढ़ने जा रहा है। जब तक -XX: + CMSClassUnloadingEnabled निर्दिष्ट नहीं है।

अधिकतम ढेर आकार (-Xmx) और MaxPermSize विचार कितनी स्मृति आवेदन वर्गों और उदाहरणों, सर्वर की कुल मेमोरी और मेमोरी अन्य अनुप्रयोगों की जरूरत के लिए आवश्यक है को ध्यान में रखकर निर्धारित किया जाना है।

एक और महत्वपूर्ण बात यह है कि से मेमोरी का विस्तार करना न्यूनतम हीप आकार (-Xms) एक महंगा ऑपरेशन है। खासकर वित्तीय अनुप्रयोगों के मामले में इसका मतलब देरी हो सकती है। समान वास्तविक समय की आवश्यकताओं के साथ, एक ही मूल्य पर -Xms और -Xmx सेट करना एक अच्छा विचार हो सकता है।

निम्नलिखित बात ब्याज http://www.infoq.com/presentations/Java-without-the-GC-Pauses

बात से की हो सकती है आप जताना सकता है कि ढेर को एक निश्चित सीमा 2GB, 10Gb, 100Gb की तुलना में अधिक वृद्धि के पक्ष प्रभाव, लंबे समय तक इसका मतलब है कूड़ा संग्रह के लिए समय को थामने कि सका बहुत बड़े ढेर के मामले में सेकंड या एक मिनट के लिए सब कुछ बंद करो।

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

पाठ्यक्रम की यह सलाह जीबी ऑर्डर में बड़ी ढेर के लिए लागू होती है, यदि आपका एप्लिकेशन 256 एमबी मेमोरी के साथ ठीक चलता है, तो मैं बिना किसी जांच के उस मूल्य को रखूंगा।

-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled 
+0

संदर्भ उदाहरण के लिए धन्यवाद! कॉपी-पेस्ट कुछ कारणों (वर्चुअल मशीन) के लिए मेरे लिए काम नहीं करता है, जो सोच सकते हैं कि यह क्यों काम नहीं कर रहा है .. – Fico

+0

@Fico शायद आपकी आभासी मशीन के ढेर पर कॉपी-पेस्ट के लिए पर्याप्त जगह नहीं है? –

-3

नीचे सेटिंग बदलकर हल:

और अंत में संदर्भ के लिए यहाँ कुछ उदाहरण सेटिंग नहीं है। फ़ाइल -> विकल्प -> ट्रस्ट सेंटर -> ट्रस्ट सेंटर सेटिंग्स -> बाहरी सामग्री -> सभी कार्यपुस्तिका लिंक के लिए स्वचालित अपडेट सक्षम करें।

- धन्यवाद

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