बोहेम गार्बेज कलेक्टर

बोहेम-डेमर्स-वेइज़र गार्बेज कलेक्टर (संग्राहक), जिसे प्रायः बोहेम जीसी के नाम से जाना जाता है, C और C++ के लिए एक रूढ़िवादी गार्बेज कलेक्टर है, जिसे हंस बोहेम, एलन डेमर्स और मार्क वेइज़र द्वारा विकसित किया गया है।

बोहेम जीसी एक मुक्त सॉफ़्टवेयर है जो X11 लाइसेंस के समान एक अनुमेय मुक्त सॉफ़्टवेयर लाइसेंस के तहत वितरित किया जाता है। इस संग्राहक का परिचय देने वाला पहला पेपर 1992 में प्रकाशित हुआ था।

डिज़ाइन
हंस बोहेम ने कलेक्टर के संचालन का वर्णन इस प्रकार किया है:

बोहेम जीसी लीक डिटेक्शन मोड में भी चल सकता है जिसमें मेमोरी प्रबंधन अभी भी मैन्युअल रूप से किया जाता है, लेकिन बोहेम जीसी जांच कर सकता है कि यह ठीक से किया गया है या नहीं। इस तरह से एक प्रोग्रामर मेमोरी लीक और डबल डीललोकेशन का पता लगा सकता है।

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

संचालन
गार्बेज कलेक्टर अधिकांश असंशोधित सी प्रोग्रामों के साथ काम करता है, पूर्णतः Malloc को GC_MALLOC कॉल से बदलकर, realloc को GC_REALLOC कॉल से बदलकर और free कॉल करता है। नीचे दिए गए कोड का भाग दिखाता है कि कोई पारंपरिक मॉलोक के स्थान पर बोहेम का उपयोग कैसे कर सकता है और सी में मुक्त कैसे उपयोग कर सकता है। पूर्णता के लिए, बोहेम के माध्यम से स्पष्ट आवंटन रद्द करने का समर्थन करता है। प्रीप्रोसेसर मैक्रोज़ का उपयोग करके सभी प्रतिस्थापन किए जा सकते हैं।

उपयोग और पोर्ट
बोहेम जीसी का उपयोग कई परियोजनाओं द्वारा किया जाता है जो इंकस्केप जैसे C या C++ में कार्यान्वित होते हैं, साथ ही क्रिस्टल, कोडन उच्च प्रदर्शन पायथन कंपाइलर, जावा के लिए जीएनयू कंपाइलर सहित कई अन्य भाषाओं के लिए रनटाइम वातावरण द्वारा उपयोग किया जाता है। रनटाइम वातावरण, पोर्टेबल.नेट प्रोजेक्ट, एंबेडेबल कॉमन लिस्प, जीएनयू गुइल, माइक्रोसॉफ्ट .NET प्लेटफ़ॉर्म का मोनो कार्यान्वयन (संस्करण 2.8 के बाद से सटीक कॉम्पैक्टिंग जीसी का उपयोग भी), वैकल्पिक रूप से जीएनयूस्टेप, और libgc-d (एक बाइंडिंग) D प्रोग्रामिंग भाषा के लिए libgc, जिसका उपयोग मुख्य रूप से एमसीआई में किया जाता है)। यह कई ऑपरेटिंग सिस्टम का समर्थन करता है, जिसमें कई यूनिक्स वेरिएंट (जैसे कि मैकओएस) और माइक्रोसॉफ़्ट विंडोज़ सम्मिलित हैं, और वृद्धिशील संग्रह, समानांतर संग्रह और विभिन्न प्रकार के फाइनलाइज़र सेमेन्टिक्स सहित कई उन्नत सुविधाएं प्रदान करता है।

बाहरी संबंध

 * Transparent Programmer-Directed Garbage Collection for C++, Hans-J. Boehm and Michael Spertus
 * Dr. Dobbs The Boehm Collector for C and C++, Gene Michael Stover, March 01, 2003
 * Transparent Programmer-Directed Garbage Collection for C++, Hans-J. Boehm and Michael Spertus
 * Dr. Dobbs The Boehm Collector for C and C++, Gene Michael Stover, March 01, 2003
 * Dr. Dobbs The Boehm Collector for C and C++, Gene Michael Stover, March 01, 2003