हम एक वेब अनुप्रयोग जावा 6, बिलाव 6, स्प्रिंग फ्रेमवर्क 3 चल रहा है, हाइबरनेट 4, ehcache है। हमें बहुत लंबे समय तक कचरा संग्रहण समय के साथ समस्या है जिसमें आवेदन को उत्तरदायी छोड़ने में 30 सेकंड या उससे अधिक समय लग सकता है।अत्यंत लंबे कचरा संग्रहण बार
हम परीक्षण में वर्तमान में लेकिन अलग स्पष्ट से कर रहे हैं: अधिक स्मृति जोड़ने के लिए, मैं सोच रहा था अगर वहाँ पहलुओं हम कम करने के लिए कर सकता है धुन कचरा संग्रहण समय कर रहे हैं।
स्मृति उपयोग करने के लिए प्रमुख योगदान ehcache के रूप में हम आक्रामक तरीके से कैशिंग कर रहे हैं। लेकिन मुझे हमेशा EHCache स्टोर्स (नए एएचकेएसी बाइट आकार के स्टोर का आकार देने में कठिनाई होती है, जो हमारे साथ सभी प्रकार की समस्याओं का कारण बनती है क्योंकि कैश्ड ऑब्जेक्ट ग्राफ़ काफी बड़े हो सकते हैं)।
ये JVM
JAVA_OPTS="$JAVA_OPTS -server -Xms256m -Xmx704m XX:OnOutOfMemoryError=/usr/share/scripts/on_server_crash.sh -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat6 -XX:MaxPermSize=192m -XX:+UseConcMarkSweepGC
आप इन लंबे समय के स्मृति से पहले 704MB की अधिकतम तक पहुँचने मिलता है? उपयोग की गई स्मृति को बढ़ाने का निर्णय लेने से पहले जेवीएम प्रयुक्त स्मृति को कम करने की कोशिश में थोड़ा सा आक्रामक हो सकता है (और संभावित रूप से इसे स्थानांतरित कर सकता है)। यदि आप -Xms704m -Xmx704m का उपयोग करते हैं तो यह वही व्यवहार करता है? –
"jstat -gc 1s pid" का उपयोग करके आप देख सकते हैं कि आपकी मेमोरी उपयोग नर्सरी को हिट करती है या नर्सरी, ईडन और बूढ़े के बीच मेमोरी आवंटन बदला जाना चाहिए। –
जेपीरोडाइलर/योरकिट के साथ आपको आवेदन करने के लिए संक्षिप्त, आपके पास कोई ठोस सुझाव नहीं है। –