2010-02-10 15 views
29

जावा में पर्मजेन स्पेस का महत्व क्या है?पर्मजेन स्पेस का महत्व

+0

संभावित डुप्लिकेट [पर्मगेन वास्तव में क्या खड़ा है?] (Http://stackoverflow.com/questions/318942/what-does-permgen-actually-stand-for) – rds

उत्तर

44

परमजेन स्पेस लंबी अवधि की वस्तुओं के लिए आरक्षित है - अधिकतर ClassClassLoader द्वारा लोड की गई वस्तुओं। पर्मजेन बहुत विशेष परिस्थितियों को छोड़कर कचरा नहीं होगा (विशेष रूप से, जब ClassLoader जो उन कक्षाओं को लोड करता है जो गुंजाइश से बाहर हो जाता है)।

यह एक कचरा संग्रहण अनुकूलन है - यदि ऑब्जेक्ट्स जिन्हें हम एकत्रित कचरा होने की उम्मीद नहीं करते हैं, तो अलग-अलग संग्रहित होते हैं, यह उस स्थान को संकलित करता है जहां शेष वस्तुओं को संग्रहीत किया जाता है, जिससे कचरा कलेक्टर के लिए कम काम होता है।

+0

क्लासलोडर जिसका आप उल्लेख कर रहे हैं वह सिस्टम है कक्षा लोडर? बूटस्ट्रैप क्लास लोडर द्वारा संग्रहीत कक्षाएं कहां संग्रहीत हैं? –

+0

बूटस्ट्रैप लोडर द्वारा लोड की गई कक्षाएं वे हैं जो भाषा के अभिन्न अंग हैं, जैसे 'स्ट्रिंग' और 'ऑब्जेक्ट'। यह JVM के मूल कार्यान्वयन का हिस्सा है, इसलिए "कहां" के संबंध में कोई मानक उत्तर नहीं है। – danben

+0

ठीक है। तो क्या पर्मजन में सिस्टम क्लास लोडर द्वारा लोड की गई कक्षाएं होंगी? –

6

केवल एक चीज जो आपको वास्तव में जाननी है वह यह है कि पर्मजेन स्पेस सामान्य ढेर से अलग है और -Xmx वीएम पैरामीटर से प्रभावित नहीं है। यदि आपके पास ऐसा कोई एप्लिकेशन है जो बहुत से क्लास परिभाषाओं (जैसे एप्लिकेशन सर्वर या आईडीई) लोड करता है तो आप -XX:MaxPermSize वीएम विकल्प का उपयोग कर पर्मजेन स्पेस आकार सेट कर सकते हैं।

4

स्थायी पीढ़ी में उपयोगकर्ता वर्गों (कक्षाएं जो जावा भाषा का हिस्सा नहीं हैं) का वर्णन करने वाले मेटा-डेटा रखती हैं।

बड़े कोड-बेस वाले अनुप्रयोग ढेर के इस सेगमेंट को भर सकते हैं जो java.lang.OutOfMemoryError: PermGen का कारण बनता है। यह -Xmx सेटिंग या मशीन पर आपके पास कितनी मेमोरी से प्रभावित नहीं है। नया प्रारंभिक आकार सेट करने के लिए, -XX:PermSize=64m का उपयोग करें। अधिकतम आकार निर्धारित करने के लिए, -XX:MaxPermSize=128m

+0

"क्लास जो जावा भाषा का हिस्सा नहीं हैं" से आपका क्या मतलब है? क्या आप किसी भी कक्षा के बारे में जानते हैं जो परमगेन में संग्रहीत नहीं किया जाएगा? – danben

8

परममेन सामान्य रूप से कचरा संग्रह वाले वीएम के लिए विशिष्ट है।

यदि आप जेआरोकिट का उपयोग करते हैं, तो "पर्मजेन का महत्व" अस्तित्व में नहीं है क्योंकि जेआरॉकिट में यह अवधारणा नहीं है।

यह कुछ साल पहले आम था, जब अजीब "पर्मजेन स्पेस से बाहर" त्रुटियां दिखाई देने लगती थीं और कोई भी नहीं जानता था कि यह किसकी गलती थी (टॉमकैट + हाइबरनेट + सन वीएम इसे ट्रिगर करने के लिए उपयोग किया जाता है) घटक में से एक (आजकल समस्याओं को समझा जाता है, लेकिन कई साल पहले जब उन्होंने फसल शुरू कर दी थी तो इस पर कोई जानकारी ढूंढना मुश्किल नहीं था)। आप जेआरॉकआईटी आदि के साथ टॉमकैट को रालिन या सन वीएम के साथ प्रतिस्थापित कर सकते हैं

मुझे लगता है कि यह इंगित करना महत्वपूर्ण है कि पर्मगेन जावा चश्मे का हिस्सा नहीं हैं और केवल कुछ वीएम के कार्यान्वयन विवरण हैं।

संबंधित मुद्दे