JVM 'java.lang.OutOfMemoryError: GC ओवरहेड सीमा पार करने के लिए' का उपयोग करने का नमूना लेने का समय क्या है? मुझे पता है कि आप पैरामीटर GCTimeLimit और GCHeapFreeLimit के साथ 98% और 2% को नियंत्रित कर सकते हैं लेकिन नमूना समय क्या है?
जवाबों:
से जावा SE 6 हॉटस्पॉट [टीएम] वर्चुअल मशीन कूड़ा संग्रह ट्यूनिंग
निम्नलिखित
अत्यधिक जीसी समय और आउटऑफ़मेरीऑरर
समवर्ती कलेक्टर एक आउटऑफमेमोरी एरोर को फेंक देगा यदि बहुत अधिक समय कचरा संग्रह में खर्च किया जा रहा है: यदि कुल समय का 98% से अधिक समय कचरा संग्रह में खर्च किया जाता है और 2% से कम हीप बरामद किया जाता है, तो एक आउटऑफमेमोइरोर फेंका जाएगा। यह सुविधा अनुप्रयोगों को कम या कोई प्रगति नहीं करते हुए विस्तारित अवधि के लिए चलने से रोकने के लिए डिज़ाइन की गई है क्योंकि ढेर बहुत छोटा है। यदि आवश्यक हो, तो कमांड लाइन में विकल्प -XX: -UseGCOverheadLimit जोड़कर इस सुविधा को अक्षम किया जा सकता है।
नीति समान है कि समानांतर कलेक्टर में, उस समय को छोड़कर समवर्ती संग्रह प्रदर्शन 98% समय सीमा की ओर नहीं गिना जाता है। दूसरे शब्दों में, केवल संग्रह का प्रदर्शन किया जाता है जबकि एप्लिकेशन को अत्यधिक GC समय की ओर गिना जाता है। इस तरह के संग्रह आमतौर पर समवर्ती मोड विफलता या एक स्पष्ट संग्रह अनुरोध (उदाहरण के लिए, System.gc ()) के कारण होते हैं।
आगे नीचे एक मार्ग के साथ संयोजन के रूप में
आरबीआई द्वारा वितरित कचरा संग्रह (डीजीसी) के साथ स्पष्ट कचरा संग्रह के सबसे अधिक उपयोग किए जाने वाले उपयोगों में से एक होता है। RMI का उपयोग करने वाले अनुप्रयोग अन्य आभासी मशीनों में वस्तुओं को संदर्भित करते हैं। कचरा कभी-कभी स्थानीय ढेर को इकट्ठा किए बिना इन वितरित अनुप्रयोगों में एकत्र नहीं किया जा सकता है, इसलिए आरएमआई समय-समय पर पूर्ण संग्रह करता है। इन संग्रहों की आवृत्ति को गुणों के साथ नियंत्रित किया जा सकता है। उदाहरण के लिए,
java -Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000एक बार प्रति मिनट की डिफ़ॉल्ट दर के बजाय प्रति घंटे एक बार स्पष्ट संग्रह निर्दिष्ट करता है। हालाँकि, इससे कुछ वस्तुओं को पुनः प्राप्त होने में अधिक समय लग सकता है। डीजीसी गतिविधि की समयबद्धता पर ऊपरी बाध्यता की कोई इच्छा नहीं है, तो इन गुणों को स्पष्ट संग्रह के बीच समय बनाने के लिए Long.MAX_VALUE के रूप में उच्च के रूप में सेट किया जा सकता है।
लगता है कि 98% का निर्धारण करने के लिए मूल्यांकन की अवधि एक मिनट लंबी है, लेकिन यह सही परिभाषित के साथ सूर्य के जेवीएम पर विन्यास योग्य हो सकता है।
बेशक, अन्य व्याख्याएं संभव हैं।
-XX:+DisableExplicitGC इसे सेट करते हैं तो भी यह आरएमआई से संबंधित कॉन्फ़िगरेशन को प्रभावित नहीं करेगा और सिस्टम पैरामीटर के साथ आवृत्ति सेट में जीसी लागू करेगा-Dsun.rmi.dgc.server.gcInterval
-Dsun.rmi.dgc.server.gcIntervalसंपत्ति जावा 1.2 के आसपास है।