में प्रतिबद्ध ढेर मेमोरी को कैसे कम करें हमारे JVMs अपेक्षा से अधिक स्मृति का उपभोग कर रहे हैं। हमने कुछ प्रोफाइलिंग किया और पाया कि कोई रिसाव नहीं है। प्रयुक्त ढेर मेमोरी 2.9 जीबी अधिकतम तक जाती है लेकिन यह निष्क्रिय समय के दौरान 800 एमबी तक आती है। लेकिन प्रतिबद्ध ढेर 3.5 जीबी (कभी-कभी 4 जीबी) तक बढ़ी और कभी नीचे नहीं आती। निष्क्रिय समय के बाद, जब 800 एमबी से ढेर का उपयोग किया जाता है, तो 3.5 गीगा से ढेर हेप मेमोरी बढ़ जाती है। तो हमारा सर्वर जल्द ही अधिकतम मेमोरी आकार तक पहुंचता है और हमें उन्हें हर दूसरे दिन पुनरारंभ करना होगा।JVM
मेरे सवाल कर रहे हैं
- मेरे समझ है कि प्रतिबद्ध ढेर स्मृति वर्तमान में स्मृति आवंटित किया जाता है। जब उपयोग की गई ढेर मेमोरी कम हो जाती है तो प्रतिबद्ध स्मृति भी कम नहीं हो रही है?
- अपने स्तर (800 एमबी) के लिए प्रतिबद्ध ढेर भी स्मृति से इस्तेमाल किया ढेर स्मृति बढ़ जाती है (3.5GB से)
अपने स्तर से बढ़कर हो जब हम स्मृति सेटिंग्स नीचे हमारे सर्वर में है:
-Xmx4096M -Xms1536M -XX:PermSize=128M -XX:MaxPermSize=512M
प्रतिबद्धता का अर्थ जेवीएम द्वारा आवंटित किया गया है; आपका अधिकतम ढेर आकार 4 गीगा है, ताकि जब आवश्यक हो, प्रतिबद्ध स्मृति उस थ्रेसशोल्ड तक जाती है। फिर यह _might_ को सिस्टम पर वापस दिया जाए, लेकिन शायद आपके मामले में जेवीएम को ऐसा करने की आवश्यकता महसूस नहीं होती है। –
https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryUsage.html –
मैं केवल JVM को आपके द्वारा उपलब्ध स्मृति की मात्रा प्रदान करता हूं उदा। 3 जीबी शायद और फिर आपको इसे पुनरारंभ करने की आवश्यकता नहीं है। –