क्या कोई कचरा बीनने वाले हैं जो पेजिंग को ध्यान में रखते हैं?


12

कचरा संग्रह में उन सभी वस्तुओं का दौरा करना है जो जीवित हैं, ताकि स्मृति को पुनः प्राप्त किया जा सके। (कई पीढ़ियों के होने में बस थोड़ी देरी होती है)

सभी चीजें समान हो रही हैं, स्पष्ट रूप से बेहतर है कि पहले उस वस्तु का दौरा किया जाए जो पहले से ही रैम में मौजूद है, दूसरे ब्लॉक को पेजिंग करने से पहले और इसलिए कुछ ऑब्जेक्ट को पेजिंग कर रहा है।

पूरी संभावना है कि जब ओएस प्रक्रिया से दूर राम का एक पृष्ठ लेना चाहता है, तो जीसी से पहले पूछा जाता है कि क्या उसके पास ऐसा पृष्ठ है जिसे पृष्ठांकित किए बिना छोड़ दिया जा सकता है। जीसी ज्यादातर एक पृष्ठ से चलती वस्तुओं के साथ किया जा सकता है, इसलिए ओएस को पेज की आवश्यकता के लिए उस समय सीमा के भीतर उस पृष्ठ को साफ कर सकता है।

फिर भी, मैं किसी भी कचरा संग्रहकर्ता को याद नहीं कर सकता जो कि जीसी के काम करने वाले ओएस पेजिंग सिस्टम के साथ एकीकृत होता है।


वास्तव में पेजिंग नहीं है लेकिन अलग-अलग पृष्ठों पर ऑब्जेक्ट मेटा-डेटा को स्थानांतरित करके लिखने के पृष्ठों पर प्रतिलिपि पर जीसी के प्रभाव को कम करने के लिए माणिक उद्यम संस्करण जीसी को फिर से लिखा गया था।
user1937198

Malloc / मुक्त कार्यान्वयन के बारे में कुछ हद तक संबंधित प्रश्न: क्या Malloc कार्यान्वयन सिस्टम में फ़्री-एड मेमोरी वापस करेगा? , विशेष रूप से यह जवाब । भी: क्या नि
पॉल ए। क्लेटन

आश्चर्यजनक रूप से, afaik / afaict, लगभग सभी (?) gc साहित्य में OS पेजिंग का विश्लेषण करने के अलावा कुछ भी नहीं लगता है। विचार: एक मेमोरी एलोकेशन सिस्टम जो ऑब्जेक्ट से अलग संरचना के बीच पॉइंटर्स का ट्रैक रखता है, ऑब्जेक्ट्स से अधिक स्थानीय / पेजिंग फ्रेंडली हो सकता है क्योंकि केवल पॉइंटर्स ही सभी ऑब्जेक्ट्स के बजाय एक तंग कॉम्पैक्ट जगह में ट्रैवर्स (gc के दौरान) होते हैं। अलग-अलग आकार जो मेमोरी में फैल सकते हैं (और कुछ अनजाने में एक्सेस किए गए और इतने पृष्ठांकित)। वहाँ कुछ मामूली ओवरहेड हो सकता है लेकिन यह कार्यान्वयन के आधार पर समग्र रूप से बचत के लिए काम कर सकता है।
vzn

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

1
एक पैटर्न मैंने उन मामलों में उपयोग किया है जहां डेटा आइटम मेरी मेमोरी-चंक साइज के सापेक्ष सभी छोटे थे, प्रत्येक डेटा आइटम में एक निश्चित-आकार के हेडर होते थे जो कि फ्रंट-टू-बैक और चर-आकार के डेटा को आवंटित किया जाता था जो कि होता बैक-टू-फ्रंट आवंटित किया जाए। एक तालिका ने भौतिक पतों और तार्किक रूप से प्रत्येक चंक में मुक्त स्थान की मात्रा के लिए तार्किक चंक पते रखे; प्रत्येक स्कैन के बाद यह भी पता चलेगा कि कितना स्थान मृत था। संदर्भ फ्लैश में संग्रहीत किए गए थे, और प्रत्येक संदर्भ में तार्किक चंक # 7 का आइटम "3" था। एक जीसी चक्र एक लाइव से सभी डेटा को एक नए से कॉपी करेगा, और ...
सुपरकैट

जवाबों:


8

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

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

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

इस तरह के विचार स्वाभाविक हैं, और संभवतः कुछ पत्रों में वर्णित हैं। लेकिन मुझे यह याद नहीं है। मुझे लगता है कि लिस्प जीसी पर शुरुआती पत्रों में इनमें से कुछ विचार हैं (जैसे: कार या सीडीआर का पालन पहले किया जाना चाहिए)।

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

फिर आपके पास कैश सिस्टम के साथ जेसीएल के सभी इंटरैक्शन हैं, जो कि पिछले प्रश्न में चर्चा की गई है: क्या जेनरल कचरा उठाने वाले स्वाभाविक रूप से कैश-फ्रेंडली हैं?

इन मुद्दों के बारे में अधिक जानकारी के लिए, मैं उदाहरण के लिए, कचरा संग्रहण और इलाके के साथ वेब पर खोज करूँगा ।


नकल करने वाले कलेक्टरों के विचार से मैं वास्तव में बहुत अधिक "स्थानीय" हो गया हूं। कॉपी कलेक्टरों को "पुराने स्थान" पर ट्रेसिंग करने के लिए वैचारिक रूप से मेमोरी एक्सेस डायनेमिक्स (शायद लगभग अप्रभेद्य) के समान लगता है। लगता है कि यह एक संदर्भ की जरूरत है। ने कहा कि नए स्थान में प्रतिवाद में सुधार करने वाले प्रतिलिपि तंत्र की कुछ संभावना है। नया स्थान पूरी तरह से सन्निहित है, लेकिन फिर यह "स्थानीयता" समय के साथ कम या कम हो जाती है।
vzn

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

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

मैं कह रहा हूं कि यह साहित्य में है, कई अन्य चीजों की तरह। लेकिन मेरे पास इसे खोजने के लिए समय नहीं है और मुझे लगता है कि मेरा उत्तर लंबी और सूचना के साथ चरमरा गया है।, आप Google: कचरा संग्रह की प्रतिलिपि स्थानीयता में बना सकते हैं, और पिछले प्रश्न का संदर्भ है। क्षमा करने के लिए क्षमा करें, पकड़ने के लिए एक ट्रेन मिली।
बबौ

क्षमा करें ... इस प्रश्न को दूसरे के साथ भ्रमित करें ... जिसमें अधिक है।
बबौ

8

एमरी बर्जर, मैथ्यू हर्ट्ज और यी फेंग ने इस पर कुछ काम किया।

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

मैं एक कचरा संग्रहकर्ता प्रस्तुत करता हूं जो पेजिंग से बचा जाता है। यह बुकमार्क करने वाला कलेक्टर अपने निष्कासन निर्णयों का मार्गदर्शन करने के लिए वर्चुअल मेमोरी मैनेजर के साथ सहयोग करता है।

यह एमरी की उस पर बात का एक वीडियो है, और उन्होंने एक पेपर गारबेज कलेक्शन विदाउट पेजिंग लिखा है

कुछ कारणों से ऐसा लगता है कि बहुत बाद में इस पर काम किया गया, या "वास्तविक दुनिया" का कोई उपयोग नहीं हुआ। कागज के अंत में यह कहता है कि "हम बुकमार्क संग्रह एल्गोरिथ्म का एक समवर्ती संस्करण विकसित कर रहे हैं" , लेकिन मैं इसे ट्रैक नहीं कर सकता।

क्रैम: गारबेज-कलेक्टेड एप्लिकेशन के लिए वर्चुअल मेमोरी सपोर्ट, जीसी को कम पेजिंग बनाने के लिए ओएस को बदलते हुए देखता है।

ट्रेसिंग गारबेज कलेक्शन में ट्रेडऑफ़ बैलेंस के लिए पेज रेजीडेंसी का उपयोग करना

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.