2012-05-15 19 views
6

मैं के बारे में एक जीवित सर्वर के लिए एक आवेदन को तैनात करने और अभी मैं हिस्सा है जहां मैं JVM के लिए ढेर और permgen आकार सेट करने के लिए पर हूँ कर रहा हूँ को परिभाषित करने की आवश्यकता है। मैंने बहुत सारे लेख देखे हैं और उनमें से सभी कहते हैं "न्यूनतम ढेर आकार (कुछ संख्या) को सेट करें" और "अधिकतम ढेर आकार (कुछ संख्या) पर सेट करें", लेकिन इनमें से कोई भी लेख वास्तव में क्यों नहीं कहता है न्यूनतम ढेर आकार सेट करने की जरूरत है। मैं अधिकतम ढेर आकार निर्धारित करने का कारण समझता हूं, लेकिन न्यूनतम के बारे में नहीं। यदि आप इस पर कुछ प्रकाश डालते हैं तो मैं आभारी रहूंगा।मैं वास्तव में जावा न्यूनतम ढेर आकार

+0

ठीक है आप किसी भी चीज़ पर कम सीमा क्यों निर्धारित करेंगे? क्योंकि आपके प्रोग्राम को एक निश्चित राशि की आवश्यकता हो सकती है। क्या मैं इस सवाल को गलत समझ रहा हूं? क्या आपका मतलब है कि सेटिंग मिनट वास्तव में आवश्यक है? – keyser

+2

संभावित डुप्लिकेट [न्यूनतम जावा हीप आकार सेट करने का कारण क्या है?] (Http://stackoverflow.com/questions/8085949/whats-the-reason-to-set-a-minimal-java-heap-size) – assylias

उत्तर

6

जावा में ढेर सामान्य स्मृति आवंटन क्षेत्र है। आइए मान लीजिए कि हमने न्यूनतम ढेर आकार 1000 बाइट्स सेट किया है (यह एक बेतुका कम संख्या है)। अब आइए कहें कि मैं अपने प्रोग्राम में किसी ऑब्जेक्ट को तुरंत चालू करता हूं जिसमें कुछ पाठ शामिल हैं जो दो हजार वर्ण लंबा है। मैं इस ऑब्जेक्ट को पहले अपने ढेर आकार का विस्तार किए बिना सहेज नहीं सकता। अब, संभवतः मेरा अधिकतम ढेर पैरामीटर इतना बड़ा करने के लिए पर्याप्त है - लेकिन अधिकतम ढेर आकार निर्धारित करने का यही कारण है।

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

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

1

एक न्यूनतम ढेर आकार सेट करना जावा कुछ स्मृति आवंटित करने के लिए सामने जो स्टार्टअप समय को बेहतर बनाता है की अनुमति देता है।

1

(डिफ़ॉल्ट ऊपर) स्पष्ट रूप से न्यूनतम आकार की स्थापना ओएस स्तर पर आवंटन विखंडन के साथ मदद करता है और समय प्रदर्शन शुरू।

जावा ढेर ओएस द्वारा आबंटित स्मृति के द्वारा समर्थित है, बड़ा प्रारंभिक ब्लॉक कम फिर से आवंटन और विखंडन कि हो जाएगा।

न्यूनतम के बराबर या अधिक से अधिक के लगभग बराबर करने के बाद, इन स्थितियों पूरी तरह से समाप्त करेंगे।

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