गार्बेज कलेक्शन और मेमोरी प्रबंधन
मेमोरी प्रबंधन यह नियंत्रित करता है कि प्रोग्राम मेमोरी को कैसे आवंटित और पुनः प्राप्त करते हैं; गार्बेज कलेक्शन उन वस्तुओं की पहचान करके और उन्हें मुक्त करके पुनः प्राप्ति को स्वचालित करता है जो अब पहुंच योग्य नहीं हैं।
Definition
मेमोरी प्रबंधन एक प्रोग्राम की मेमोरी का आवंटन और पुनः प्राप्ति है; गार्बेज कलेक्शन स्वचालित पुनः प्राप्ति है जो उन वस्तुओं द्वारा अधिकृत मेमोरी को मुक्त करती है जिन तक प्रोग्राम अब नहीं पहुंच सकता है, जिससे प्रोग्रामर को स्पष्ट डीएलोकेशन (deallocation) से मुक्ति मिलती है।
Scope
यह विषय भाषा रनटाइम के लिए स्वचालित और मैन्युअल मेमोरी प्रबंधन को शामिल करता है: संदर्भ गणना (reference counting), मार्क-एंड-स्वीप (mark-and-sweep), कॉपीिंग (copying), और जनरेशनल कलेक्शन (generational collection); पहुंच योग्यता का पता लगाना (tracing reachability); और थ्रूपुट (throughput), पॉज़ टाइम (pause time), और मेमोरी ओवरहेड (memory overhead) के बीच के व्यापार-बंद (trade-offs)। यह समवर्ती (concurrent) और वृद्धिशील संग्राहकों (incremental collectors) और संग्रह रणनीति (collection strategy) तथा भाषा डिज़ाइन (language design) के बीच के संबंध को संबोधित करता है।
Core questions
- एक संग्राहक कैसे निर्धारित करता है कि किन वस्तुओं की अभी भी आवश्यकता है?
- थ्रूपुट, विलंबता और मेमोरी फुटप्रिंट के बीच क्या व्यापार-बंद हैं?
- वस्तुओं को उम्र के अनुसार अलग करने (जनरेशनल कलेक्शन) से दक्षता में सुधार क्यों होता है?
- इंटरैक्टिव या वास्तविक समय प्रणालियों में संग्रह लंबे विराम से कैसे बच सकता है?
Key theories
- ट्रेसिंग गार्बेज कलेक्शन
- मैककार्थी ने लिस्प के लिए स्वचालित गार्बेज कलेक्शन की शुरुआत की, जिससे यह विचार स्थापित हुआ कि प्रोग्राम के रूट्स से कौन सी वस्तुएं पहुंच योग्य रहती हैं, उनका पता लगाकर मेमोरी को पुनः प्राप्त किया जाए।
- जनरेशनल कलेक्शन
- लाइबरमैन और हेविट ने देखा कि अधिकांश वस्तुएं कम उम्र में ही समाप्त हो जाती हैं और उन्होंने युवा पीढ़ियों को अधिक बार एकत्र करने का प्रस्ताव दिया, जिससे व्यवहार में संग्रह लागत में नाटकीय रूप से कमी आई (जनरेशनल परिकल्पना)।
- संग्रह तकनीकों का वर्गीकरण
- विल्सन और गार्बेज कलेक्शन हैंडबुक संदर्भ गणना, मार्क-स्वीप, कॉपीिंग, वृद्धिशील और समवर्ती संग्राहकों के डिज़ाइन स्पेस और उनके प्रदर्शन व्यापार-बंदों को व्यवस्थित करते हैं।
Clinical relevance
स्वचालित मेमोरी प्रबंधन डेंगलिंग पॉइंटर्स (dangling pointers) और मेमोरी लीक्स (memory leaks) जैसे बग्स के पूरे वर्गों को समाप्त करता है, यही कारण है कि अधिकांश उच्च-स्तरीय भाषाएं गार्बेज कलेक्शन पर निर्भर करती हैं। संग्राहक का चुनाव एप्लिकेशन विलंबता (latency) और थ्रूपुट को दृढ़ता से प्रभावित करता है, खासकर इंटरैक्टिव और सर्वर सिस्टम के लिए।
History
मैककार्थी ने 1960 में लिस्प (Lisp) के साथ गार्बेज कलेक्शन की शुरुआत की। कॉपीिंग कलेक्शन (चेनी) और संदर्भ गणना इसके बाद आए, और लाइबरमैन और हेविट के 1983 के जनरेशनल कलेक्टर ने ऑब्जेक्ट लाइफटाइम का फायदा उठाया। बाद के दशकों में वृद्धिशील (incremental), समवर्ती (concurrent), और क्षेत्र-आधारित संग्राहक (region-based collectors) का उत्पादन हुआ, जिसका व्यापक सर्वेक्षण विल्सन के 1992 के काम और 2011 की गार्बेज कलेक्शन हैंडबुक में किया गया है।
Debates
- स्वचालित संग्रह बनाम मैन्युअल या स्वामित्व-आधारित प्रबंधन
- डिजाइनर गार्बेज कलेक्शन पर बहस करते हैं, जो सुरक्षित और सुविधाजनक है लेकिन इसमें विराम और ओवरहेड हो सकता है, बनाम मैन्युअल या स्वामित्व-आधारित प्रबंधन, जो प्रोग्रामर के बोझ और जोखिम की कीमत पर अनुमानित प्रदर्शन और कम फुटप्रिंट प्रदान करता है।
Key figures
- John McCarthy
- Henry Lieberman
- Carl Hewitt
- Richard Jones
- Paul Wilson
Related topics
Seminal works
- mccarthy1960
- lieberman1983
- wilson1992
- jones2011
Frequently asked questions
- एक गार्बेज कलेक्टर को कैसे पता चलता है कि किन वस्तुओं को मुक्त करना है?
- एक ट्रेसिंग कलेक्टर ज्ञात रूट्स से शुरू होता है, जैसे स्टैक वेरिएबल्स और ग्लोबल्स, और सभी पहुंच योग्य वस्तुओं को चिह्नित करने के लिए संदर्भों का पालन करता है; जो कुछ भी नहीं पहुंचता है वह अप्राप्य होता है और उसे पुनः प्राप्त किया जा सकता है।
- जनरेशनल गार्बेज कलेक्शन प्रभावी क्यों है?
- क्योंकि अधिकांश वस्तुएं आवंटन के तुरंत बाद अप्राप्य हो जाती हैं, युवा पीढ़ी को बार-बार एकत्र करने से अधिकांश कचरा सस्ते में पुनः प्राप्त हो जाता है जबकि पुरानी, लंबे समय तक जीवित रहने वाली वस्तुओं को बहुत कम बार स्कैन किया जाता है।