मुझे समझाएं।
चलिए एक उदाहरण के रूप में थ्रूपूट कलेक्टर लेते हैं। (उर्फ समांतर कलेक्टर)। दस्तावेज़ों का कहना है कि यह प्रमुख संग्रह (सीरियल कलेक्टर के समान) के लिए माइनर संग्रह और एकल धागा करने के लिए कई धागे का उपयोग करता है।
यहां कुछ समझने के लिए कुछ है। डिफ़ॉल्ट रूप से, अधिकांश नए सिस्टम पर, जेवीएम युवा और पुरानी पीढ़ियों के लिए दो अलग कचरा कलेक्टरों का उपयोग करता है। मेरी मशीन पर: मेरे पास पीढ़ी पीढ़ी के लिए समानांतर नए कलेक्टर और जनरेशन के लिए समवर्ती मार्क और स्वीप कलेक्टर है।
मामूली संग्रह तब ट्रिगर होता है जब JVM एक नए ऑब्जेक्ट के लिए स्थान आवंटित करने में असमर्थ है (याद रखें: नई वस्तुएं हमेशा युवा पीढ़ी के ईडन क्षेत्र में आवंटित की जाती हैं)।
अगला प्रश्न:
क्या यह एक पूर्ण जीसी द्वारा मतलब है: क) यह दोनों माइनर और मेजर संग्रह मतलब यह है की जाती हैं? या बी) पूर्ण जीसी == प्रमुख संग्रह? इनमें से कौनसा?
और,
इसके अलावा, 4. क्या पूर्ण जीसी केवल OldGeneration या YoungGeneration रूप में अच्छी तरह पर असर पड़ेगा?
यह निर्भर करता है। जेवीएम प्रत्येक प्रमुख संग्रह को पूर्ण जीसी के रूप में रिपोर्ट करता है। [इन झंडे java -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamp
] के साथ प्रयास करें।पैडेंटिक परिभाषा यह है कि पूर्ण जीसी माइनर के बाद पहले माइनर चलाता है (यद्यपि पुरानी पीढ़ी पूरी तरह से मुक्त हो जाती है, अगर ऑर्डर यंग जेनरेशन से ऑब्जेक्ट प्राप्त करने की अनुमति देने के लिए पहले किया जाता है)।
ठीक है, बिंदु पर वापस। जेवीएम मेजर कलेक्शन [पुराने (या पर्म) जेनरेशन में] पूर्ण जीसी के रूप में मानता है। नीचे एक प्रोग्राम से आउटपुट हैं जो मैं बिंदु को चित्रित करने के लिए जल्दी से लिखने में सक्षम था। पहली पंक्ति माइनर जीसी है और दूसरा मेजर (पूर्ण) जीसी है। आप देख सकते हैं कि यह केवल पुराने पीढ़ी (सीएमएस) में हुआ था और पुरानी पीढ़ी को 1082 के से 1034 के तक कम करने में सक्षम था।
11.431: [GC 11.431: [ParNew: 1152K->128K(1152K), 0.0009893 secs] 2111K->1210K(6464K), 0.0010182 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
17.882: [Full GC (System) 17.882: [CMS: 1082K->1034K(5312K), 0.0212614 secs] 2034K->1034K(6464K), [CMS Perm : 9426K->9410K(21248K)], 0.0213200 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
अगला सवाल:
तो एक), इसका मतलब यह है कि माइनर संग्रह अभी भी एक से अधिक थ्रेड का उपयोग कर, जबकि मेजर किया गया था किया जाता है एकल का उपयोग कर?
हां। मेरे उत्तर की शुरुआत देखें। युवा और वृद्ध पीढ़ी विभिन्न संग्राहकों द्वारा परोसा जाता है। युवा पीढ़ी के लिए, आप निम्न में से किसी एक का उपयोग कर सकते हैं:
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC
पुरानी पीढ़ी के लिए, उपलब्ध विकल्प हैं:
-XX:+UseParallelOldGC
-XX:+UseConcMarkSweepGC
+1। मेरे प्रश्न पूछने के लिए धन्यवाद – Imposter