मेरे पास 7 अलग-अलग जावा डिमन्स हैं जो मैं चलाता हूं (सभी 7) 3 अलग-अलग सर्वरों पर। जावा कमांड लाइन में -Xmx2048m और -Xss1024k है। इन 3 सर्वरों पर, सभी 21 प्रक्रियाएं शीर्ष पर और ऊपर VIRT आकार के लिए केवल 2.5 जीबी से कम दिखाई देती हैं। आरईएस आकार 300 से 1.9 जीबी के बीच बदलता है, जिसके अनुसार यह डिमन है।जावा प्रक्रिया को एक्सएमएक्स या एक्सएसएस सीमा से काफी अधिक होने का कारण क्या होगा?
यह सब कुछ होना चाहिए जैसा कि होना चाहिए।
नया सर्वर दर्ज करें। तेज़ सीपीयू, अधिक रैम (8 जीबी की बजाय 16 जीबी), थोड़ा नया जावा (पुराने सर्वर पर 1.6.0_10-बी 33, नए सर्वर पर 1.6.0_31-बी04)। दोनों सिस्टम (और जेवीएम) 64 बिट हैं।
नए सर्वर पर 2 डेमॉन को हटा दिया गया। नए सर्वर पर, एक ही कार्य को देखते हुए, डेमॉन दोनों अधिक सीपीयू (कोर के लायक के बारे में) और कम काम करने वाले दोनों उपभोग कर रहे हैं। (पुराने सिस्टम पर 5110 प्रोसेसर से नए पर 5620 तक स्थानांतरित)।
सीपीयू उपयोग (जीसी थ्रेड ??) का बहुत अधिक अतिरिक्त कोर और एक डेमॉन के लिए 5 जीबी वीआईआरटी और 2 जीबी आरईएस और अन्य डिमन के लिए 2 जीबी वीआईआरटी और 2 जीबी आरईएस की रिपोर्टिंग।
किसी भी विचार से जावा को अनदेखा करने के लिए क्या कारण होगा (या अगर यह मामला अनदेखा होता है) स्मृति सीमा?
वीआईआरटी वर्चुअल मेमोरी है, जिसका ढेर अंतरिक्ष के साथ कोई सीधा संबंध नहीं है। मैं इस प्रश्न के उत्तर पढ़ने की अनुशंसा करता हूं: http://stackoverflow.com/questions/4893192/process-memory-vs-heap-jvm –
क्या आपने नई मशीन पर जावा के उसी संस्करण के साथ प्रयास किया था? क्या वे दोनों एक ही बिट-नेस हैं? –
'एक्सएमएक्स' जेवीएम के स्मृति उपयोग को निर्दिष्ट नहीं करता है; यह ढेर आवंटन पूल का अधिकतम आकार निर्दिष्ट करता है, जो कि जेवीएम द्वारा उपयोग किए जाने वाले मेमोरी पूल में से एक है। – skaffman