वे युवा पीढ़ी के कचरा संग्रह के लिए एल्गोरिदम हैं।
दूसरा एक (UseParNewGC) समवर्ती दसवीं पीढ़ी के कचरा संग्रह ( जावा समवर्ती और समानांतर जीसी देखें ) के साथ स्वचालित रूप से सक्रिय हो जाता है , लेकिन, क्या दो समानांतर एल्गोरिदम के बीच अंतर है?
वे युवा पीढ़ी के कचरा संग्रह के लिए एल्गोरिदम हैं।
दूसरा एक (UseParNewGC) समवर्ती दसवीं पीढ़ी के कचरा संग्रह ( जावा समवर्ती और समानांतर जीसी देखें ) के साथ स्वचालित रूप से सक्रिय हो जाता है , लेकिन, क्या दो समानांतर एल्गोरिदम के बीच अंतर है?
जवाबों:
बहुत खोज करने के बाद, मैंने पाया सबसे अच्छा स्पष्टीकरण महीने के प्रश्न में जावा प्रदर्शन ट्यूनिंग वेबसाइट से है : 1.4.1 कचरा संग्रह एल्गोरिदम, 29 जनवरी, 2003
युवा पीढ़ी कचरा संग्रह एल्गोरिदम
(मूल) नकल कलेक्टर (डिफ़ॉल्ट रूप से सक्षम किया गया)। जब यह कलेक्टर अंदर जाता है, तो सभी एप्लिकेशन थ्रेड्स बंद हो जाते हैं, और एक थ्रेड का उपयोग करके कॉपी संग्रह आगे बढ़ता है (जिसका अर्थ है कि केवल एक सीपीयू मल्टी-सीपीयू मशीन पर भी)। इसे स्टॉप-द-वर्ल्ड संग्रह के रूप में जाना जाता है, क्योंकि मूल रूप से JVM संग्रह पूरा होने तक बाकी सब कुछ रोक देता है।
समानांतर नकल कलेक्टर (-XX का उपयोग कर सक्रिय: + UseParNewGC)। मूल प्रतिलिपि संग्राहक की तरह, यह एक स्टॉप-द-वर्ल्ड कलेक्टर है। हालाँकि यह कलेक्टर कई थ्रेड्स पर नकल संग्रह को समानांतर करता है, जो मल्टी-सीपीयू मशीनों के लिए मूल सिंगल-थ्रेड कॉपी कलेक्टर की तुलना में अधिक कुशल है (हालांकि सिंगल-सीपीयू मशीनों के लिए नहीं)। यह एल्गोरिथ्म मूल रूप से एकल-थ्रेडेड कॉपी कलेक्टर की तुलना में उपलब्ध सीपीयू की संख्या के बराबर कारक द्वारा युवा पीढ़ी के संग्रह को संभावित रूप से गति देता है।
समानांतर मांजना कलेक्टर (-XX का उपयोग कर सक्रिय: UseParallelGC)। यह पिछले समानांतर कॉपी कलेक्टर की तरह है, लेकिन एल्गोरिथ्म मल्टी-सीपीयू मशीनों पर गीगाबाइट हीप्स (10 जीबी से अधिक) के लिए ट्यून किया गया है। यह संग्रह एल्गोरिथ्म ठहराव को कम करते हुए थ्रूपुट को अधिकतम करने के लिए डिज़ाइन किया गया है। इसमें एक वैकल्पिक अनुकूली ट्यूनिंग नीति है जो स्वचालित रूप से हीप स्पेस का आकार बदलेगी। यदि आप इस कलेक्टर का उपयोग करते हैं, तो आप केवल पुरानी पीढ़ी में मूल मार्क-स्वीप कलेक्टर का उपयोग कर सकते हैं (यानी नई पुरानी पीढ़ी के समवर्ती कलेक्टर इस युवा पीढ़ी के कलेक्टर के साथ काम नहीं कर सकते हैं)।
इस जानकारी से, यह मुख्य अंतर लगता है (सीएमएस सहयोग के अलावा) यह है कि UseParallelGC, एर्गोनॉमिक्स का समर्थन करता है जबकि UseParNewGC नहीं करता है।
UseParNewGC समवर्ती कलेक्टर (यानी -XX: + UseConcMarkSweepGC कमांड लाइन पर प्रयोग किया जाता है, तो समवर्ती कलेक्टर के साथ युवा पीढ़ी की नकल करने वाले कलेक्टर के समानांतर संस्करण का उपयोग किया जाता है। ध्वज का उपयोग तब होता है, जब यह अन्यथा कमांड लाइन पर स्पष्ट रूप से सेट न हो। )।
शायद समझने का सबसे आसान तरीका एलेक्सी रागज़िन द्वारा किए गए कचरा संग्रह एल्गोरिदम का संयोजन था
निष्कर्ष:
-XX:-UseParallelGC
।
-XX:+UseParallelGC
करने से आधुनिक जेवीएम के लिए युवा और पुराने जीसी दोनों के लिए समानांतर जीसी का उपयोग होता है। देखें bugs.openjdk.java.net/browse/...
UseParNewGC को आमतौर पर "समानांतर युवा पीढ़ी कलेक्टर" के रूप में जाना जाता है, जो सभी प्रकार के समानांतर कचरा कलेक्टर (-XX: + UseParallelGC) के समान है, सिवाय इसके कि इसके अधिक परिष्कारित और अपवित्र। साथ ही इसका उपयोग "समवर्ती कम ठहराव कलेक्टर" के साथ किया जा सकता है।
अधिक जानकारी के लिए जावा GC FAQ देखें , प्रश्न 22।
ध्यान दें कि UseParNewGC के साथ कुछ ज्ञात बग हैं
का उपयोग करते हुए -XX: + -PPNNGCGC के साथ -XX का उपयोग करें: + UseConcMarkSweepGC, जब -XX: + UseParallelGC की तुलना में माइनर जीसी के लिए उच्च ठहराव समय का कारण होगा।
ऐसा इसलिए है क्योंकि यंग से ओल्ड जेनरेशन तक की वस्तुओं के प्रचार के लिए इस ऑब्जेक्ट का पता खोजने के लिए एक बेस्ट-फिट एल्गोरिदम (पुरानी पीढ़ी के विखंडन के कारण) को चलाने की आवश्यकता होगी।
-XX का उपयोग करते समय ऐसे एल्गोरिथ्म को चलाने की आवश्यकता नहीं होती है: + UseParallelGC, जैसा कि + UseParallelGC को केवल मार्कैंड कॉमपैक्ट कलेक्टर के साथ कॉन्फ़िगर किया जा सकता है, जिस स्थिति में कोई विखंडन नहीं होता है।