JVM

2015-04-23 10 views
6

में प्रतिबद्ध ढेर मेमोरी को कैसे कम करें हमारे JVMs अपेक्षा से अधिक स्मृति का उपभोग कर रहे हैं। हमने कुछ प्रोफाइलिंग किया और पाया कि कोई रिसाव नहीं है। प्रयुक्त ढेर मेमोरी 2.9 जीबी अधिकतम तक जाती है लेकिन यह निष्क्रिय समय के दौरान 800 एमबी तक आती है। लेकिन प्रतिबद्ध ढेर 3.5 जीबी (कभी-कभी 4 जीबी) तक बढ़ी और कभी नीचे नहीं आती। निष्क्रिय समय के बाद, जब 800 एमबी से ढेर का उपयोग किया जाता है, तो 3.5 गीगा से ढेर हेप मेमोरी बढ़ जाती है। तो हमारा सर्वर जल्द ही अधिकतम मेमोरी आकार तक पहुंचता है और हमें उन्हें हर दूसरे दिन पुनरारंभ करना होगा।JVM

मेरे सवाल कर रहे हैं

  1. मेरे समझ है कि प्रतिबद्ध ढेर स्मृति वर्तमान में स्मृति आवंटित किया जाता है। जब उपयोग की गई ढेर मेमोरी कम हो जाती है तो प्रतिबद्ध स्मृति भी कम नहीं हो रही है?
  2. अपने स्तर (800 एमबी) के लिए प्रतिबद्ध ढेर भी स्मृति से इस्तेमाल किया ढेर स्मृति बढ़ जाती है (3.5GB से)

अपने स्तर से बढ़कर हो जब हम स्मृति सेटिंग्स नीचे हमारे सर्वर में है:

-Xmx4096M -Xms1536M -XX:PermSize=128M -XX:MaxPermSize=512M 
+2

प्रतिबद्धता का अर्थ जेवीएम द्वारा आवंटित किया गया है; आपका अधिकतम ढेर आकार 4 गीगा है, ताकि जब आवश्यक हो, प्रतिबद्ध स्मृति उस थ्रेसशोल्ड तक जाती है। फिर यह _might_ को सिस्टम पर वापस दिया जाए, लेकिन शायद आपके मामले में जेवीएम को ऐसा करने की आवश्यकता महसूस नहीं होती है। –

+3

https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryUsage.html –

+0

मैं केवल JVM को आपके द्वारा उपलब्ध स्मृति की मात्रा प्रदान करता हूं उदा। 3 जीबी शायद और फिर आपको इसे पुनरारंभ करने की आवश्यकता नहीं है। –

उत्तर

1

आप ट्यून -XX करने की कोशिश कर सकते हैं: MaxHeapFreeRatio जो "जीसी के बाद घटने से बचने के लिए अधिकतम ढेर का अधिकतम प्रतिशत" है। डिफ़ॉल्ट मान = 70

+0

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

+0

यह अब काम कर रहा है जब मैं -XX: + UseSerialGC जोड़ता हूं, क्या यह कोई अन्य समस्या है जिसका सामना करने की ज़रूरत है यदि मैं यह विकल्प देता हूं? –

+0

यह जीसी प्रदर्शन –