दिलचस्प पोस्ट
GDI + में ड्राइंग निर्देशांक के लिए कड़ी सीमा क्या है? एंड्रॉइड में ऐरे एडाप्टर का उपयोग करके कस्टम फ़िल्टरिंग एसक्यूएल में एक सूचकांक क्या है? खंड से संवाद दिखाएं? फ़ाइल भेजने के लिए PHP का प्रयोग करते समय पुनः डाउनलोड किया जा सकता है? स्तंभ नाम वाले कई स्तंभों का सबसे बड़ा मूल्य? जांचें कि क्या बूलियन अपवाद में सही परिणाम है गीथूब फ़ाइल आकार की सीमा 6/18/13 को बदल दी गई है अब धक्का नहीं लगा सकते घातक त्रुटि: स्विफ्ट 2.0 के साथ किसी स्थान को स्वैप करने का समर्थन नहीं किया गया है जावा कन्वर्टर्स और जावा रूपांतरण स्काला में क्या अंतर है? क्या एसकैपी का उपयोग वेबसाइटों से गतिशील सामग्री को परिमार्जन करने के लिए किया जा सकता है जो AJAX का उपयोग कर रहे हैं? जावा 8 और जावा 9 में अहस्ताक्षरित पूर्णांक का उपयोग कैसे करें? अपठित जीमेल मेल की संख्या कैसे प्राप्त करें (एंड्रॉइड पर) File_get_contents का उपयोग करके एक फ़ाइल अपलोड करें Django के साथ एक एचटीटीपीआरपीएसप को कैसे प्रसारित करें

जावा हीप शब्दावली: युवा, पुरानी और स्थायी पीढ़ी?

मैं यह समझने की कोशिश कर रहा हूं कि कैसे जावा ढेर शब्दावली में युवा , पुरानी और स्थायी पीढ़ियों की अवधारणाओं, और अधिक विशेष रूप से तीन पीढ़ियों के बीच बातचीत।

मेरे प्रश्न हैं:

  • युवा पीढ़ी क्या है?
  • पुरानी पीढ़ी क्या है?
  • स्थायी पीढ़ी क्या है?
  • कैसे तीन पीढ़ियां एक दूसरे से सम्बन्ध / संबंधित हैं?

Solutions Collecting From Web of "जावा हीप शब्दावली: युवा, पुरानी और स्थायी पीढ़ी?"

यह एक आम गलतफहमी की तरह लगता है ओरेकल के जेवीएम में, स्थायी पीढ़ी ढेर का हिस्सा नहीं है। यह कक्षा परिभाषाओं और संबंधित डेटा के लिए एक अलग स्थान है जावा 6 और पहले के संस्करणों में, आंतरिक तार भी स्थायी पीढ़ी में संग्रहीत किए गए थे। जावा 7 में, interned स्ट्रिंग मुख्य ऑब्जेक्ट ढेर में संग्रहीत हैं।

यहां स्थायी पीढ़ी पर एक अच्छा पोस्ट है ।

मुझे जेकोनोल पर ऑरेकल की मार्गदर्शिका में प्रत्येक स्थान के लिए दिए गए विवरण पसंद हैं:

हॉटस्पॉट जावा वीएम के लिए, धारावाहिक कचरा संग्रह के लिए स्मृति पूल निम्न हैं

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

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

ढेर युवा और पुरानी पीढ़ियों में विभाजित है:

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

  • ईडन स्पेस : जब ऑब्जेक्ट इस स्थान पर आवंटित नई कीवर्ड मेमोरी का उपयोग करते हैं।
  • उत्तरजीवी अंतरिक्ष : यह वह पूल है जिसमें ईडन अंतरिक्ष से जावा कूड़ा संग्रह के बाद जीवित वस्तुएं हैं।

पुरानी पीढ़ी : इस पूल में मूल रूप से स्थायी और आभासी (आरक्षित) स्थान है और उन वस्तुओं को पकड़ेगा जो कि युवा पीढ़ी से कचरा संग्रहण के बाद बच गए थे।

  • टेन्यूअर स्पेस: इस मेमोरी पूल में ऐसे ऑब्जेक्ट होते हैं जो कई कचरा संग्रहों के बाद बचे हुए हैं, जो ऑब्जेक्ट है जो उत्तरजीवी अंतरिक्ष से कचरा संग्रहण के बाद बच गया।

स्थायी जनरेशन: नाम के रूप में इस मेमोरी पूल में स्थायी क्लास मेटाडेटा और डिस्क्रिप्टर जानकारी शामिल होती है, इसलिए वर्ड जीन स्पेस हमेशा कक्षाओं के लिए आरक्षित रहता है और उदाहरण के लिए क्लास से जुड़ा हुआ है।

Java8 अद्यतन: PermGen Metaspace के साथ बदल दिया है जो बहुत समान है।
मुख्य अंतर यह है कि मेटाससेट फिर से आकार गतिशील अर्थात्, यह क्रम में विस्तार कर सकते हैं।
जावा मेथसेट अंतरिक्ष: असीम (डिफ़ॉल्ट)

कोड कैश (वर्चुअल या आरक्षित): यदि आप हॉटस्पॉट जावा वीएम का प्रयोग कर रहे हैं तो इसमें कोड कैश क्षेत्र शामिल है जिसमें मेमोरी है, जिसका उपयोग मूल कोड के संकलन और संग्रहण के लिए किया जाएगा।

यहां छवि विवरण दर्ज करें

के सौजन्य से

युवा पीढ़ी क्या है?

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

पुरानी पीढ़ी क्या है?

पुरानी पीढ़ी लंबे जीवित वस्तुओं को संग्रहित करने के लिए उपयोग की जाती है। आम तौर पर, युवा पीढ़ी के ऑब्जेक्ट के लिए एक थ्रेशोल्ड सेट होता है और जब उस युग से मुलाकात होती है, तो ऑब्जेक्ट पुरानी पीढ़ी में स्थानांतरित हो जाता है। आखिरकार पुरानी पीढ़ी को इकट्ठा करना होगा। इस घटना को एक प्रमुख कचरा संग्रहण कहा जाता है

स्थायी पीढ़ी क्या है?

अनुप्रयोग में उपयोग किए जाने वाले वर्गों और विधियों का वर्णन करने के लिए स्थायी जनरेशन में जेवीएम द्वारा आवश्यक मेटाडेटा होता है। स्थायी पीढ़ी को जीवाणु द्वारा रनटाइम में आवेदन द्वारा उपयोग किए जाने वाले वर्गों के आधार पर बसाया जाता है।

PermGen को मेटास्प्रेस से बदल दिया गया है, क्योंकि जावा 8 जारी है।

PermSize और MaxPermSize पैरामीटर अब उपेक्षा हो जाएगा

कैसे तीन पीढ़ियां एक दूसरे से सम्बन्ध / संबंधित हैं?

यहां छवि विवरण दर्ज करें

छवि स्रोत और ऑरेकल टेक्नोलॉजिक ट्यूटोरियल लेख: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

उपरोक्त आलेख में " सामान्य कचरा संग्रह प्रक्रिया " में कई आरेखों के बीच उनके बीच बातचीत का वर्णन किया गया है।

सारांश आरेख पर एक नज़र डालें:

यहां छवि विवरण दर्ज करें

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

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

(जो दस्तावेज में कमी है, कचरा लेने वाले, खासकर मल्टी-कोर सिस्टम के पूरे व्यवसाय पर -301 के बाद के बारे में कोई जानकारी है। फिर भी, आपको चलाने के लिए सीखने से पहले चलना सीखना होगा।)

मान लें कि आप सूर्य जेडीके / ओपन जेडीके के बारे में बात कर रहे हैं, ओपनजडीके की वेबसाइट भंडारण प्रबंधन पर देखें । तल पर और भी अधिक जानकारी के लिए कुछ लिंक हैं

यद्यपि यह ट्यूनिंग के बारे में है, मैं यह सुझाव नहीं दे सकता कि इस दस्तावेज़ को अध्याय 3 पर नज़र डालें और यदि आप चाहें तो गहराई में जाएं।

सनहोटस्पॉट जेवीएम में मेमोरी तीन पीढ़ियों में व्यवस्थित होती है: युवा पीढ़ी, पुरानी पीढ़ी और स्थायी पीढ़ी।

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

एफवाईआई: स्थायी सामान्य को जावा ढेर का हिस्सा नहीं माना जाता है।

कैसे तीन पीढ़ियां एक दूसरे से सम्बन्ध / संबंधित हैं? वस्तुएं (बड़े वाले को छोड़कर) पहले युवा पीढ़ी को आवंटित की जाती हैं। अगर कोई वस्तु एक्स नंबर के बाद जीवित रहती है कचरा संग्रह चक्रों की यह पुरानी / शालीन जन को बढ़ावा देता है इसलिए हम यह कह सकते हैं कि युवा जीन में छोटी जीवित वस्तुएं होती हैं, जबकि पुरानी जन में लंबे जीवन होने वाले वस्तुओं होते हैं स्थायी जीन अन्य दो पीढ़ियों के साथ बातचीत नहीं करता है