फेंकने वाला JVM ठीक है, तो हम जावा एप्लिकेशन चला रहे हैं जो कभी-कभी "फ्रीज" होता है क्योंकि कुछ थ्रेड लगभग सभी ढेर का उपयोग कर रहे हैं। जेवीएम पूर्ण जीसी करने के बावजूद 60 सेकंड से अधिक समय तक एप्लिकेशन आउटऑफमेमरी एरर के साथ कभी नहीं मरता है।जब एक आउटऑफमेमरी एरर
मैं जावा प्रलेखन से पढ़ा है कि:
throughput कलेक्टर यदि बहुत अधिक समय कचरा संग्रहण कर खर्च किया जा रहा है एक बाहर के स्मृति अपवाद फेंक देते हैं। उदाहरण के लिए, यदि JVM कुल समय में 98% से अधिक कचरा संग्रह कर रहा है और ढेर के 2% से कम पुनर्प्राप्त कर रहा है, तो यह एक आउट-ऑफ-मेमोरी एक्सपेक्शन फेंक देगा।
मुझे इस 98% समय के बारे में अधिक जानकारी चाहिए (समय सीमा क्या है?), और यदि यह मान कम करना संभव है, यानी यदि आवेदन 9 0% खर्च कर रहा है तो ओओएमई फेंकना जीसी में समय और ढेर के 10% से अधिक मुक्त नहीं कर सकते हैं।
लक्ष्य यह सुनिश्चित करना है कि आवेदन मर जाएगा (ओओएमई के साथ केवल जीसी करने की बजाए) ताकि हम ओओएमई पर डंप उत्पन्न कर सकें।
यहाँ स्मृति और जीसी सेटिंग्स हम प्रयोग कर रहे हैं (ओएस सोलारिस है):
-Xms2048m -Xmx2048m \
-Xmn512m \
-XX:PermSize=256m
-XX:MaxPermSize=256m \
-XX:+UseParNewGC
-XX:ParallelGCThreads=16 \
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled \
-XX:+DisableExplicitGC \
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps \
-XX:+PrintClassHistogram \
-Xloggc:/gcmonitor.log \
-XX:+HandlePromotionFailure \
-XX:SurvivorRatio=4
-XX:TargetSurvivorRatio=90
-XX:MaxTenuringThreshold=10 \
-XX:+UseTLAB
-XX:TLABSize=32k
-XX:+ResizeTLAB \
-XX:+UseMPSS \
अपने जवाब और सवाल तुम मुझे मैं की दिशा में रखे के लिए धन्यवाद निम्नलिखित संसाधन मिला: http://docs.oracle.com/ जावेज/1.5.0/डॉक्स/गाइड/वीएम/जीसी-एर्गोनॉमिक्स.html मैं इसे आज़माकर प्रतिक्रिया पोस्ट करूंगा। – neirda