से अधिक हो गई है मैं कक्षाएं उत्पन्न करने और रन टाइम पर उन्हें लोड करने की कोशिश कर रहा हूं।
कक्षाओं को लोड करने के लिए मैं ClassLoader
ऑब्जेक्ट का उपयोग कर रहा हूं। चूंकि मैं समय-समय पर PermGen
मेमोरी से बाहर नहीं निकलना चाहता हूं, इसलिए मैं कक्षा लोडर का संदर्भ नहीं देता और उपयोग करने के लिए नए वर्गों को लोड करने के लिए एक नया निर्माण करता हूं। यह ठीक काम करता प्रतीत होता है और मुझे स्मृति से PermGen
नहीं मिलता है।स्मृति से बाहर PermGen से बचें और जीसी ओवरहेड सीमा
java.lang.OutOfMemoryError: GC overhead limit exceeded
तो मेरे सवाल है, जब मैं संयुक्त राष्ट्र-संदर्भ वर्ग लोडर दोनों त्रुटियों ?:
मैं पर नजर रखने चाहिए से बचने के लिए चाहिए: समस्या यह है कि जब मुझे लगता है कि, कुछ समय के बाद मैं निम्न त्रुटि मिलता है है मेरे कोड में PermGen
उपयोग ताकि मैं कक्षा लोडर को अन-संदर्भित कर सकूं और System.gc()
पर कॉल कर सकूं जब PermGen
उपयोग सीमा के करीब है?
या मुझे एक अलग दृष्टिकोण का पालन करना चाहिए?
धन्यवाद
मैं ढेर के उपयोग की निगरानी के लिए jvisualvm का उपयोग कर रहा हूं, अधिकतम आकार 1 जीबी है और उपयोग 200 एमबी से 600 एमबी के बीच भिन्न होता है, इसलिए यह सीमा से बहुत दूर है। – otonakav
@otonakav - शायद आपके जीसी ट्यूनिंग पैरामीटर के साथ कुछ समस्या है। –