2012-05-22 16 views
64

सूर्य/ओरेकल के जेवीएम के लिए, मैंने पढ़ा है कि जीसी अलगो नई पीढ़ी को एक ईडन क्षेत्र और दो जीवित क्षेत्रों में विभाजित करता है। मैं क्या सोच रहा हूं, क्यों दो जीवित क्षेत्र और सिर्फ एक ही नहीं? अहंकार ईडन और केवल एक जीवित क्षेत्र (जिस तरह से यह वर्तमान में दो जीवित क्षेत्रों के बीच करता है) के बीच पिंग-पोंगिंग रख सकता है; या इस दृष्टिकोण के लिए कोई कमी है?जावा जीसी: दो जीवित क्षेत्र क्यों?

+1

दिलचस्प - आप जहाँ आप इस के बारे में पढ़ने के लिए लिंक (रों) पोस्टिंग में बात करेंगे? मुझे लगता है कि सवाल में मदद मिलेगी। ** संपादित करें: ** [यह आलेख] (http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html) इसका वर्णन करने लगता है, यह सुनिश्चित नहीं है कि यह वही है जिसे आप पढ़ते हैं। –

+0

पॉल बेलोरा: प्रति लिंक यह लिंक नहीं है, लेकिन मैंने इसे कई पुस्तकों और लेखों में पढ़ा है। जल्द ही इन लिंक पोस्ट करेंगे। – shrini1000

+0

@ पॉल बेलोरा यह जावा 5 के लिए है, लेकिन यह 'से' और 'से' जीवित रिक्त स्थान का उल्लेख करता है: http://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf – shrini1000

उत्तर

64

मेरा मानना ​​है कि जेआरॉकिट का जीसी कार्यान्वयन आपके जैसा सुझाव देता है, केवल एक ही ईडन और एकल जीवित स्थान के साथ, लेकिन मुझे उस पर उद्धरण न दें।

हॉटस्पॉट जेवीएम के दो जीवित रिक्त स्थान का कारण विखंडन से निपटने की आवश्यकता को कम करना है। ईडन स्पेस में नई ऑब्जेक्ट आवंटित की जाती हैं। सब ठीक है और अच्छा है। जब यह पूरा हो जाता है, तो आपको एक जीसी की आवश्यकता होती है, इसलिए पुरानी वस्तुओं को मार दें और जीवित लोगों को जीवित स्थान पर ले जाएं, जहां वे पुरानी पीढ़ी को बढ़ावा देने से पहले थोड़ी देर के लिए परिपक्व हो सकते हैं। अभी तक अभी भी अच्छा है। अगली बार जब हम ईडन स्पेस से बाहर निकलते हैं, तो हमारे पास एक कन्डर्रम है। अगला जीसी दोनों ईडन और हमारे उत्तरजीवी अंतरिक्ष में कुछ जगहों के साथ आता है और साफ़ करता है, लेकिन रिक्त स्थान संगत नहीं होते हैं। तो

  1. जीसी द्वारा छोड़े गए उत्तरजीवी अंतरिक्ष में छिद्रों में ईडन से बचे हुए लोगों को फिट करने का प्रयास करें?
  2. विखंडन को खत्म करने के लिए जीवित अंतरिक्ष में सभी वस्तुओं को शिफ्ट करें, और फिर बचे हुए लोगों को इसमें ले जाएं?
  3. बस कहें "इसे पेंच करें, हम सबकुछ चारों ओर घूम रहे हैं," और सभी जीवों से सभी बचे हुए लोगों को पूरी तरह से अलग जगह में कॉपी करें - दूसरी जीवित जगह - इस प्रकार आपको एक साफ ईडन और उत्तरजीवी स्थान जहां आप अगले जीसी पर अनुक्रम दोहरा सकते हैं?

प्रश्न का सूर्य का उत्तर स्पष्ट है।

+3

यह मेरे लिए स्पष्ट नहीं है। हॉटस्पॉट जेवीएम का क्या विकल्प है? – vz0

+1

एक बहुत स्पष्ट और सटीक उत्तर के लिए धन्यवाद। यदि संभव हो, तो आप भी पीएल कर सकते हैं। JRockit किस विकल्प का उपयोग करता है पर टिप्पणी? – shrini1000

+3

@ vz0: यह तीसरा विकल्प है। – shrini1000

1

पीढ़ी के सभी उदाहरणों को एक स्थान से दूसरे स्थान पर प्रतिलिपि बनाने के फायदे और नुकसान क्या हैं, बनाम उन्हें पीढ़ी की जगह की शुरुआत में स्मृति-पता क्रम में कॉपी करना? क्रमशः प्रसंस्करण वस्तुओं को प्रति आइटम एक अतिरिक्त सूचक जोड़ने की आवश्यकता होगी, लेकिन 'जीवित' रिक्त स्थानों में से किसी एक की आवश्यकता को खत्म कर देगा।

18

दो उत्तरजीवी रिक्त स्थान की भूमिका एक छोटी सी कचरा संग्रहण

दो उत्तरजीवी रिक्त स्थान की ऑपरेशन के बाद उलट हो जाता है। ये ऐसी वस्तुएं हैं जो कम से कम एक मामूली कचरा संग्रह से बच गई हैं लेकिन पुरानी पीढ़ी को पदोन्नत होने से पहले पहुंचने योग्य नहीं होने का एक और मौका दिया गया है। उनमें से केवल एक वस्तुएं रखती है, जबकि दूसरी बार अप्रयुक्त है।

एक मामूली कचरा संग्रह के संचालन के दौरान, कचरा पाया गया वस्तुओं को चिह्नित किया जाएगा। संग्रह में जीवित ईडन में लाइव ऑब्जेक्ट्स अप्रयुक्त उत्तरजीवी अंतरिक्ष में प्रतिलिपि बनाई गई हैं। उपयोग में आने वाले उत्तरजीवी अंतरिक्ष में लाइव ऑब्जेक्ट्स, जिन्हें युवा पीढ़ी में पुनः दावा करने का एक और मौका दिया जाएगा, को अप्रयुक्त उत्तरजीवी अंतरिक्ष में भी कॉपी किया जाएगा। अंत में, उपयोग में आने वाले उत्तरजीवी अंतरिक्ष में लाइव ऑब्जेक्ट्स, जिन्हें समझा जाता है, पुरानी पीढ़ी को प्रोत्साहित किया जाता है।

नाबालिग कचरा संग्रह के अंत में, दो जीवित रिक्त स्थान भूमिकाएं स्वैप करते हैं। ईडन पूरी तरह से खाली है; केवल एक जीवित अंतरिक्ष उपयोग में है; और पुरानी पीढ़ी का अधिग्रहण थोड़ा बढ़ गया है। चूंकि लाइव ऑब्जेक्ट्स को इसके ऑपरेशन के दौरान कॉपी किया जाता है, इस प्रकार के कचरा कलेक्टर को प्रतिलिपि कचरा कलेक्टर कहा जाता है।

स्रोत: ऊपर चार्ली हंट और बिनू जॉन द्वारा Java Performance के पृष्ठ 83 के अंश हैं।

3

युवा पीढ़ी: यह जगह है जहाँ छोटी अवधि के लिए रहते थे और दो रिक्त स्थान में विभाजित है:

ईडन अंतरिक्ष: नई वस्तुओं स्मृति पूल में आवंटित किया जाएगा। धारणा यह है कि अधिकांश वस्तु को संदर्भित किया जाता है और उनकी रचना के तुरंत बाद पहुंच योग्य नहीं होता है। जिन वस्तुओं को संदर्भित नहीं किया जा रहा है, उन्हें जीवित रिक्त स्थान में नई पीढ़ी के कचरा कलेक्टर द्वारा प्रतिलिपि बनाई जाएगी। वे कुछ विशेष मामलों को सीधे पुराने पीढ़ी के पूल में कॉपी कर सकते हैं।

उत्तरजीवी रिक्त स्थान: ये दो छोटी जगहें युवा पीढ़ी के कचरे के संग्रह की जीवित वस्तुओं को बनाए रखती हैं। जीवित वस्तुओं को एक जीवित व्यक्ति से दूसरे में एक (छोटी) संख्या के लिए प्रतिलिपि बनाई जाएगी। यह हमारी अधिक अस्वीकृत वस्तुओं को फसल करने की अनुमति देता है।

पुरानी पीढ़ी: सबसे बड़ी मेमोरी पूल जो लंबी जीवित वस्तुओं को रखना चाहिए। एक बार जीवित रिक्त स्थान छोड़ने के बाद वस्तुओं को इस पूल में कॉपी किया जा रहा है।

पर्मामेंट पीढ़ी: यह काफी अज्ञात पूल सभी वर्गों की जानकारी रखता है। अधिकांश अनुप्रयोगों के लिए इसे किसी भी ध्यान देने की आवश्यकता नहीं है। इसे कई कक्षाओं के साथ कुछ अनुप्रयोगों के लिए अनुकूलित करने की आवश्यकता हो सकती है। इसे कुछ ध्यान देने की आवश्यकता हो सकती है यदि एप्लिकेशन स्थायी रूप से कक्षाओं को लोड और अनलोड करता है।

अन्य फायदे:

  • मेमोरी विखंडन
  • यह जीसी प्रदर्शन को बेहतर बनाता

कृपया अधिक जानकारी के लिए निम्न लिंक जो आप समझ सकते हैं खोजने के अधिक

http://www.scalingbits.com/javaprimer

http://java.sys-con.com/node/84695

2

स्मृति विखंडन के बारे में सभी वर्तमान उत्तर बात, यह भी जीसी में पीढ़ियों का एक और कारण है।

रनटाइम सभी "पुरानी वस्तुओं" को रिकॉर्ड करता है जो "नई वस्तुओं" को इंगित करता है, यह हर बार "पॉइंटर" फ़ील्ड अपडेट होने पर किया जाता है। फिर जब एक "खनिक" जीसी किया जाता है, तो केवल "नई" वस्तुओं को स्कैन करने की आवश्यकता होती है।

वर्षों से यह पाया गया है कि केवल "नया" और "पुराना" पर्याप्त नहीं है, और यह तीसरी पीढ़ी है जो "मध्यम आयु वर्ग" है।

0

दो बचे हुए चिह्न चिह्न और प्रतिलिपि एल्गोरिदम के कार्यान्वयन हैं। ये युवा पीढ़ी के लिए जीसी में उपयोग किया जाता है। विकल्प में रयान द्वारा उल्लेख किया है 3 here

enter image description here

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