मैंने पढ़ा है कि पर्म जेन (या स्थायी पीढ़ी) अंतरिक्ष कचरा नहीं है। हालांकि, सीएमएस संग्रह में मैं अपने जीसी लॉग में कुछ कक्षाएं अनलोडिंग देख सकता हूं। तो पूर्ण संग्रह या सीएमएस संग्रह के दौरान एकत्रित जीन कचरा है?जावा में स्थायी जनरेशन स्पेस कचरा एकत्रित किया गया है?
उत्तर
परमजेन ढेर के अन्य हिस्सों की तरह कचरा इकट्ठा किया जाता है।
यह ध्यान देने योग्य बात यह है कि पर्मजेन में वर्गों और वस्तुओं के मेटा-डेटा शामिल हैं, जैसे ऑब्जेक्ट आवंटित किए गए शेष ढेर में पॉइंटर्स। पर्मजेन में क्लास लोडर भी होते हैं जिन्हें उनके उपयोग के अंत में मैन्युअल रूप से नष्ट किया जाना चाहिए, अन्यथा वे स्मृति में रहते हैं और ढेर पर अपनी वस्तुओं के संदर्भ भी रखते हैं। सूर्य/ओरेकल ब्लॉग साइट पर जॉन मसामित्सु द्वारा "Presenting the Permanent Generation" लेख आपको मदद कर सकता है।
सूर्य ब्लॉग प्रविष्टि क्या थी? लिंक काम नहीं करता है ... –
सुधारित। यह एक सन ब्लॉग था इसलिए अब यह ओरेकल ब्लॉग है :) –
मैंने शीर्षक और लेखक को रेखांकित किया है ताकि लिंक फिर से टूट जाए तो लोग इसे पा सकते हैं। –
वर्तमान पीढ़ी के जेवीएम में, वास्तव में ढेर के अन्य हिस्सों की तरह परमजन एकत्र किया जाता है। visualgc पृष्ठ बताता है कि यह पुरानी पीढ़ी के साथ एकत्रित किया जाता है।
पुराने जेवीएम में यह स्पष्ट रूप से हमेशा ऐसा नहीं था। उदाहरण के लिए, जावा 5 में सीएमएस कलेक्टर स्पष्ट रूप से डिफ़ॉल्ट रूप से परमैन एकत्र नहीं किया था: आप इसे -XX:+CMSPermGenSweepingEnabled
के साथ सक्षम कर सकते हैं। मुझे यह भी याद है कि कुछ वास्तव में पुराने जेवीएम ने परमजन संग्रह को लागू नहीं किया है, हालांकि मुझे इसके लिए एक विश्वसनीय स्रोत नहीं मिल रहा है ... ermm ... "factoid"।
दूसरी बात यह है कि बहुत से लोगों के पास गलत तरीके से को "आउटऑफमेमरी एरर: परमिट" अपवादों को अनुमति नहीं दी जा रही है। वास्तविकता अलग है। इन ओओएमई का सबसे आम कारण एक कपटपूर्ण भंडारण रिसाव है जो प्रकट होता है जब आप निष्पादित JVM में कोड को हॉट-लोड करते हैं। रिसाव तब होता है जब कुछ पुराने वर्ग का एक उदाहरण बदल दिया गया है। इससे ऑब्जेक्ट की कक्षा तक पहुंच योग्य हो जाती है, जिससे क्लास क्लासलोडर पहुंच योग्य हो जाता है, जिससे पुराने वर्गों के सभी पहुंचने योग्य होते हैं, साथ ही उनके कोड ऑब्जेक्ट्स, उनके स्ट्रिंग अक्षर और उनके स्थिर फ्रेम और स्थिर होते हैं। इनमें से बहुत सी लीक ऑब्जेक्ट्स परमजन स्पेस में रहते हैं।
अद्यतन
जावा 8 के रूप में, permgen अब मौजूद नहीं है: PermGen elimination in JDK 8
- 1. जावा में एकत्रित कचरा किस वस्तु को देखा गया है?
- 2. जावा थ्रेड कचरा एकत्रित या नहीं
- 3. जावा डायरेक्टबेट बफर रैपर कचरा एकत्रित हैं?
- 4. सिल्वरलाइट कंटेंट कंट्रोल्स कचरा क्यों नहीं एकत्रित किया जाता है?
- 5. क्या यह कचरा एकत्रित होगा?
- 6. जावा में कब और कैसे कक्षा कचरा एकत्रित किया जाता है?
- 7. कचरा संग्रह में जनरेशन क्या हैं?
- 8. 100% पूर्ण ईडन स्पेस, 0% उपयोग उत्तरजीवी अंतरिक्ष - कचरा संग्रह नहीं किया गया
- 9. जावा में स्थिर आवंटन - ढेर, ढेर और स्थायी पीढ़ी
- 10. क्यों "java.lang.OutOfMemoryError: जावा हीप स्पेस" पकड़ा नहीं गया है?
- 11. जावा कोड जनरेशन
- 12. जावा में, वस्तुओं का एक ऐरे कचरा कैसे एकत्र किया जाता है?
- 13. कचरा एकत्रित सी सी ++ से तेज हो जाएगा?
- 14. जावा स्रोत कोड जनरेशन फ्रेमवर्क
- 15. जावा ऑर्डर किया गया मानचित्र
- 16. जावा कचरा संग्रह
- 17. जावा कचरा इकट्ठा स्मृति नहीं
- 18. मेवेन में कोड जनरेशन
- 19. जब MVAr कचरा एकत्र किया जाता है
- 20. जावा में कितना सुपर लागू किया गया है?
- 21. जावा 7 में मल्टी-कैच लागू किया गया है?
- 22. क्या आरएआईआई सी # में उपयोग करने के लिए सुरक्षित है? और अन्य कचरा भाषा एकत्रित करना?
- 23. जावा मेमोरी प्रबंधन में, 'पीएस' के लिए क्या खड़ा है?
- 24. मैं कैसे निर्धारित करूं कि स्क्रीन से 3 डी स्पेस में क्या स्पर्श किया गया है?
- 25. स्थायी NSManagedObjectID इतना स्थायी नहीं है?
- 26. उत्पादन गुणवत्ता कोको एप्लिकेशन में उपयोग किया गया कचरा संग्रह है?
- 27. java.lang.OutOfMemoryError: जावा हीप स्पेस
- 28. जावा कचरा संग्रह
- 29. Enum.values () परिभाषित किया गया है?
- 30. जीवित जनरेशन को समझना मीट्रिक
की संभावित डुप्लिकेट http://stackoverflow.com/questions/88235/how-to-deal-with -जावा-लैंग-आउटोफमेमोरिअर-परजेन-स्पेस-एरर? वैसे भी उस धागे की जांच करें, यह निश्चित रूप से मदद करेगा। –
नहीं, यह बिल्कुल नकल नहीं है। यह एक अवधारणा प्रश्न है हां/नहीं उत्तर के लिए पूछता है, एक त्रुटि के लिए समाधान मांगने वाला प्रश्न नहीं। – YudhiWidyatama