2010-03-28 14 views
26

-Xms पैरामीटर को सेट करने का लाभ क्या है, और उदाहरण के लिए प्रारंभिक मेमोरी बड़ा है, तो जावा जीसी ट्यूनिंग के अनुसार डिफ़ॉल्ट गणना की गई (मेरे मामले में 64 एमबी: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size) ?जावा-एक्सएमएस प्रारंभिक आकार प्रभाव

इसके अलावा, क्या प्रारंभिक और अधिकतम यादों को एक ही आकार में सेट करने के लिए कोई अच्छा है?

धन्यवाद।

उत्तर

31

लाभ यह है कि जब आप आकार बदलने के लिए पर्याप्त ढेर का उपयोग करते हैं तो प्रदर्शन प्रदर्शन होता है। यदि आप इसे प्रारंभ में 64 एमबी पर सेट करते हैं, लेकिन यह पता चला है कि लोड के तहत आपका आवेदन 250 एमबी की आवश्यकता है, जब आप 64 एमबी के करीब आते हैं तो जेवीएम अधिक ढेर स्पेस आवंटित करेगा और संभवतः कुछ ऑब्जेक्ट्स के चारों ओर स्थानांतरित करेगा और अन्य बुक-रख-रखाव करेगा। यह निश्चित रूप से समय लगता है।

जब आपका आवेदन लोड हो रहा है, तो आप इसे चलाने के लिए समर्पित सभी संसाधन चाहते हैं, इसलिए यह अतिरिक्त कार्य एप्लिकेशन को प्रतिक्रिया देने में धीमा कर सकता है, या यहां तक ​​कि कुछ मामलों में यह ढेर से पहले स्मृति से बाहर हो जाता है आकार बदल गया है

कभी-कभी जावा ऐप का उपयोग करते समय, आपको "Xms और Xmx समान मान पर निर्देश" दिखाई देंगे। यह पूरी तरह से आकार बदलने से बचने के लिए किया जाता है, ताकि आपका एप्लिकेशन पहले से ही उतना ही बड़ा हो सके जितना बड़ा होगा।

+0

आपके अनुभव से, क्या यह XMS को एक्सएमएक्स के समान मान पर सेट करने की अनुशंसा की जाती है? – SyBer

+7

यह एप्लिकेशन पर निर्भर करता है। यदि आप किसी ऐप या ऐप्स के सेट के लिए समर्पित सर्वर वाले वित्तीय संस्थान हैं, तो यह समझ में आता है। खासतौर से चूंकि बाजार के आदेश से निपटने वाला ऐप संभावित रूप से 2-25ms की औसत विलंबता के साथ 100 या 1000 संदेशों/सेकंड को संभालने में सक्षम हो सकता है। एक आकार उस समय भेजे गए सभी आदेशों के लिए उस विलंबता को 5000% खराब कर सकता है। आप ऑर्डर भी छोड़ सकते हैं। हमेशा, हालांकि, अनुकूलित करने का प्रयास करने से पहले प्रोफ़ाइल। – Phil

+0

यह ध्यान दिया जाना चाहिए कि बड़ी संख्या में सक्रिय JVMs -Xms के साथ सिस्टम औसत जेवीएम पदचिह्न को बढ़ाएंगे, जबकि JVM को अपने ढेर फैलाने का स्व-प्रबंधन करने की इजाजत देता है, जिससे कोई स्मृति पदचिह्न संग्रह योजनाओं को नियोजित कर सकता है। – Xailor

6

जुड़ा हुआ लेख यह काफी स्पष्ट बताते हैं:

डिफ़ॉल्ट मान: -Xms 3670k -Xmx 64M [...] बड़े सर्वर अनुप्रयोग अक्सर इन चूक के साथ दो समस्याओं का अनुभव। एक धीमी स्टार्टअप है, क्योंकि प्रारंभिक ढेर छोटा है और पर कई बड़े संग्रहों का आकार बदलना चाहिए। एक और दबाने की समस्या यह है कि डिफ़ॉल्ट अधिकतम ढेर आकार अनुचित रूप से अधिकांश सर्वर अनुप्रयोगों के लिए छोटा है। सर्वर अनुप्रयोगों के लिए अंगूठे का नियम हैं:

  1. जब तक आप रुक जाता है समस्याएं आ रही हैं, आभासी मशीन के लिए जितना संभव हो उतना स्मृति देने का प्रयास करें। डिफ़ॉल्ट आकार (64 एमबी) अक्सर छोटा होता है।
  2. उसी मूल्य का -Xms और -Xmx स्थापना आभासी मशीन से सबसे महत्वपूर्ण आकार निर्णय को हटाने के द्वारा पूर्वानुमान बढ़ जाती है। हालांकि, यदि आप खराब विकल्प बनाते हैं तो वर्चुअल मशीन को क्षतिपूर्ति करने में असमर्थ है।
  3. सामान्य रूप से, स्मृति को बढ़ाएं क्योंकि प्रोसेसर की संख्या में वृद्धि, आवंटन समानांतर हो सकता है।

आप समस्या के this discussion में रुचि भी ले सकते हैं।

3

यदि आपके आवेदन के लिए 64 एमबी से अधिक ढेर मेमोरी की आवश्यकता होती है, तो एक्सएमएस को बड़े मूल्य पर सेट करने से एप्लिकेशन के प्रदर्शन में कुछ सुधार होना चाहिए क्योंकि वीएम को कई बार अतिरिक्त मेमोरी का अनुरोध नहीं करना पड़ेगा।

एक उत्पादन प्रणाली में मैं XMS और Xmx को एक ही मान समझने पर विचार करता हूं। यह मूल रूप से कह रहा है "यह वीएम प्राप्त करने वाली ढेर मेमोरी की मात्रा है और मैं इसे तुरंत समर्पित कर रहा हूं"।

3

क्या -Xms पैरामीटर, और उदाहरण के लिए प्रारंभिक स्मृति बड़ा होने के लाभ है, तो डिफ़ॉल्ट

गणना की प्रारंभिक ढेर छोटी है, तो और कई प्रमुख से अधिक आकार दिया जाना चाहिए संग्रह, स्टार्टअप धीमा हो जाएगा।

साथ ही, प्रारंभिक और अधिकतम यादों को एक ही आकार में सेट करने के लिए कोई अच्छा है?

उसी मूल्य का -Xms और -Xmx करने से आप अनुमान देता है। प्रदर्शन ट्यूनिंग के दौरान JVM का आकार लेते समय यह विशेष रूप से महत्वपूर्ण है। लेकिन जेवीएम किसी भी बुरे निर्णय की भरपाई नहीं कर पाएगा।

मैं उत्पादन सर्वर के लिए समान मानों का उपयोग करता हूं (जो प्रदर्शन परीक्षण के दौरान ट्यून किए जाते हैं)।

+0

क्या आप अपने विचार stackoverflow.com/questions/39652282/... और stackoverflow.com/questions/39652282/... पर प्रदान कर सकते हैं? अग्रिम में धन्यवाद – emilly

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