2010-09-15 8 views
67

मैंने इस सवाल से पहले पूछा है - What does JVM flag CMSClassUnloadingEnabled actually do?, लेकिन इस बार यह थोड़ा अलग है!सीएमएसपीआरजीएन स्वीपिंग सक्षम बनाम सीएमएस क्लासउलोडिंग सक्षम

अगर मैं -XX:+CMSPermGenSweepingEnabled ध्वज सेट के साथ एक जावा वी एम शुरू करते हैं, निम्न संदेश छपा है:

भविष्य

में CMSPermGenSweepingEnabled के स्थान पर CMSClassUnloadingEnabled का उपयोग करें -XX:+CMSPermGenSweepingEnabled झंडा अक्सर प्रयोग किया जाता है PermGen OutOfMemory त्रुटियों के खिलाफ कम करने के लिए, हालांकि मेरे पास read elsewhere है कि लोगों ने पाया है कि उपरोक्त सलाह का पालन करके उन्हें अभी भी इन त्रुटियों का सामना करना पड़ा है, लेकिन -XX:+CMSPermGenSweepingEnabled के साथ चिपके हुए -XX:+CMSClassUnloadingEnabled उनका वीएम पुनरारंभ के बीच लंबे समय तक रहा है।

-XX:+CMSClassUnloadingEnabled वास्तव में -XX:+CMSPermGenSweepingEnabled को निलंबित या वहाँ अभी भी उन दोनों के होने में कुछ लाभ है?

अग्रिम

रिच ps में धन्यवाद: मुझे पता है कि पर्म जनरल मुद्दों का मूल कारण अभी भी आमतौर पर classloader लीक है, यह संदेश है कि JVM पैदा करता है अगर हम ऊपर दिए गए विकल्पों का उपयोग के बारे में अधिक है।

उत्तर

74

मैं जो कह सकता हूं उससे, एकमात्र चीज जो 1.6 जेवीएम CMSPermGenSweepingEnabled के साथ करता है वह संदेश मुद्रित करना है - यह 1.5 में जिस तरह से संसाधित नहीं है। CMSClassUnloadingEnabled के लिए कोई प्रभाव नहीं है, UseConcMarkSweepGC भी सेट किया जाना चाहिए।

+1

धन्यवाद - क्या आपके पास इस बात का कोई लिंक या अन्य तरीका है? – Rich

+28

जेडीके स्रोत कोड डाउनलोड करें (जिसमें हॉटस्पॉट शामिल है) और 'हॉटस्पॉट/src/share/vm/runtime/globals.hpp' का निरीक्षण करें। 'CMSPermGenSweepingEnabled' 1.5 में मौजूद है और 1.6 में अनुपस्थित है। इसके अलावा, 'हॉटस्पॉट/src/share/vm/runtime/arguments.cpp' के 1.6 संस्करण में संदेश प्रिंट करने के लिए नया कोड शामिल है। – kschneid

+0

यह सहायक है – hvgotcodes

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