मुझे आश्चर्य है कि जावा में पूर्ण कचरा संग्रह को ट्रिगर करने वाली सटीक स्थितियां क्या हैं।जावा में एक पूर्ण कचरा संग्रह क्या ट्रिगर करता है?
स्पष्ट हैं:
- जनरल
- वर्ष जनरल
- पर्म समाप्त होने वाले हैं समाप्त होने वाले हैं System.gc कॉलिंग()
क्या अन्य मामलों है कि पूरा का कारण के बारे में जीसी? विशेष रूप से:
- ईडन से वस्तुओं की प्रतिलिपि बनाने के लिए उत्तरजीवी अंतरिक्ष में पर्याप्त खाली स्थान नहीं है।
- छोटे संग्रह नई वस्तुओं की आवंटन दर से निपटने में सक्षम नहीं हैं (हालांकि कैसे पता नहीं)।
मैं सन जावा 1.6 चला रहा हूं और नई जेन के लिए समवर्ती मार्क-स्वीप और परन्यू का उपयोग कर रहा हूं।
चूंकि चिन बून का सुझाव है, उनमें से कोई भी "स्पष्ट" जरूरी नहीं है कि वह पूर्ण जीसी का नेतृत्व करे, यह पूरी तरह से सक्रिय कचरा कलेक्टर एल्गोरिदम काम करता है इस पर निर्भर करता है। विशेष रूप से, यह मेरी समझ है कि बहुत सारे कचरा कलेक्टर 'System.gc() 'को अनदेखा करते हैं। (और यह न भूलें कि जीसी एल्गोरिदम के लिए "पूर्ण संग्रह" की अवधारणा भी नहीं है - यह शायद दूर-दराज लग सकता है लेकिन मैंने [जी 1 कलेक्टर] नहीं देखा है (http: // www .oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html) हमारे ऐप्स पर ऐसा करें।) –
आपको लगता है कि जी 1 के साथ जेवीएम हेप स्पेस से बाहर होने पर क्या करता है? आवंटित करते रहें? जब तक यह स्मृति मुक्त नहीं हो जाता है तब तक इसे सब कुछ रोकना होगा। एक स्विच है जो सिस्टम.gc() संकेत को स्पष्ट रूप से बंद कर देता है, लेकिन मैंने डिफ़ॉल्ट रूप से इसे अनदेखा कर सीएमएस या जी 1 नहीं देखा है। –
मुझे लगता है कि यह निर्भर करता है कि आप "पूर्ण संग्रह" को कैसे परिभाषित करते हैं - मुझे विश्वास नहीं है कि यह जेएलएस या वीएम स्पेक के संदर्भ में प्रथम श्रेणी का शब्द है। इसका मतलब आपके द्वारा चलाए जा रहे विशेष जीसी एल्गोरिदम के आधार पर अलग-अलग होगा, और हो सकता है कि किसी दिए गए जीसी इम्प्ले के लिए भी समझ न हो। जो मैं इंगित करने की कोशिश कर रहा था वह यह है कि एकमात्र संभावित सामान्य उत्तर "यह निर्भर करता है", विशेष कचरा कलेक्टर के आंतरिक लोगों को स्थगित अन्य सभी विनिर्देशों के साथ। –