विशेष रूप से, यह एक PermGen OutOfMemoryError समस्या को ठीक करने में मदद क्यों करेगा?
इसके अलावा, एक जवाब के लिए बोनस अंक जो मुझे JVM तर्कों पर प्रलेखन की ओर इशारा करता है ...
विशेष रूप से, यह एक PermGen OutOfMemoryError समस्या को ठीक करने में मदद क्यों करेगा?
इसके अलावा, एक जवाब के लिए बोनस अंक जो मुझे JVM तर्कों पर प्रलेखन की ओर इशारा करता है ...
जवाबों:
स्थायी स्थान वह जगह है जहां VM द्वारा उपयोग की जाने वाली कक्षाएं, विधियां, आंतरिक स्ट्रिंग्स और इसी तरह की वस्तुओं को संग्रहीत किया जाता है और कभी भी नहीं हटाया जाता है (इसलिए नाम)।
यह ओरेकल लेख सफलतापूर्वक हॉटस्पॉट जीसी के कामकाज और परिमाणीकरण को प्रस्तुत करता है और यदि आप कई कक्षाएं लोड करते हैं तो यह स्थान बढ़ाने के लिए आपको सलाह देता है (यह आमतौर पर एप्लिकेशन सर्वर और कुछ आईडीई जैसे ग्रहण के लिए मामला है):
अधिकांश अनुप्रयोगों के लिए स्थायी पीढ़ी का कचरा कलेक्टर के प्रदर्शन पर ध्यान देने योग्य प्रभाव नहीं होता है। हालांकि, कुछ एप्लिकेशन गतिशील रूप से कई कक्षाओं को उत्पन्न और लोड करते हैं; उदाहरण के लिए, JavaServer Pages (JSP) पृष्ठों के कुछ कार्यान्वयन। इन अनुप्रयोगों को अतिरिक्त कक्षाएं रखने के लिए एक बड़ी स्थायी पीढ़ी की आवश्यकता हो सकती है। यदि ऐसा है, तो अधिकतम स्थायी पीढ़ी का आकार कमांड-लाइन विकल्प -XX के साथ बढ़ाया जा सकता है: MaxPermSize =।
ध्यान दें कि यह अन्य ओरेकल प्रलेखन अन्य हॉटस्पॉट तर्कों को सूचीबद्ध करता है।
अपडेट: जावा 8 से शुरू होकर, परमिशन स्पेस और यह सेटिंग दोनों चले गए हैं। लोड की गई कक्षाओं और विधियों के लिए उपयोग किया जाने वाला मेमोरी मॉडल अलग है और सीमित नहीं है (डिफ़ॉल्ट सेटिंग्स के साथ)। आपको इस त्रुटि को और नहीं देखना चाहिए।
-XX:PermSize -XX:MaxPermSize
स्थायी पीढ़ी के लिए आकार निर्धारित करने के लिए उपयोग किया जाता है।
परमानेंट जेनरेशन: परमानेंट जेनरेशन वह है जहां क्लास फाइल्स रखी जाती हैं। ये संकलित कक्षाओं और JSP पृष्ठों का परिणाम हैं। यदि यह स्थान भरा हुआ है, तो यह एक पूर्ण कचरा संग्रह को ट्रिगर करता है। यदि पूर्ण कचरा संग्रह पुरानी अप्रतिबंधित कक्षाओं को साफ नहीं कर सकता है और स्थायी स्थान का विस्तार करने के लिए कोई जगह नहीं बची है, तो आउट ऑफ मेमोरी मेमोरी (OOME) फेंक दी जाती है और JVM क्रैश हो जाएगा।
जावा 8 में उस पैरामीटर को आमतौर पर इस तरह एक चेतावनी संदेश प्रिंट करने के लिए उपयोग किया जाता है:
जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम चेतावनी: अनदेखा करने का विकल्प MaxPermSize = 512m; 8.0 में समर्थन हटा दिया गया था
जावा 8 में आपको यह संदेश क्यों मिलता है इसका कारण यह है कि पर्मगेन को पेप्सेन की कुछ कमियों को दूर करने के लिए मेटस्पैस द्वारा प्रतिस्थापित किया गया है (जैसा कि आप अपने लिए देख पा रहे थे, उन कमियों में से एक यह है कि इसका एक निश्चित आकार था)।
FYI करें: Metaspace पर एक लेख: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html