बोहेम गार्बेज कलेक्टर: Difference between revisions

From Vigyanwiki
(Created page with "{{Infobox software | name = Boehm–Demers–Weiser Garbage Collector | logo = | screenshot = | caption = | coll...")
 
No edit summary
Line 21: Line 21:
}}
}}


बोहेम-डेमर्स-वेइसर कचरा संग्रहकर्ता, जिसे अक्सर बोहेम जीसी के नाम से जाना जाता है, [[सी (प्रोग्रामिंग भाषा)]] और [[सी++]] के लिए एक ट्रेसिंग_कचरा_संकलन#सटीक_बनाम_रूढ़िवादी_और_आंतरिक_पॉइंटर्स कचरा संग्रह (कंप्यूटर विज्ञान) है।<ref name="Koranne2011"/>हंस बोहेम, एलन डेमर्स और [[मार्क वीज़र]] द्वारा विकसित।<ref name="homepage">Hans Boehm, [https://hboehm.info/gc/ A garbage collector for C and C++]</ref><ref name="appel">[[Andrew W. Appel]] (1998), ''[https://www.cs.princeton.edu/~appel/modern/c/ Modern Compiler Implementation in C]'' - "[https://www.cs.princeton.edu/~appel/modern/c/software/boehm/ Boehm Conservative Garbage Collector]", </ref>
'''बोहेम-डेमर्स-वेइज़र गार्बेज कलेक्ट'''र, जिसे अक्सर '''बोएहम जीसी''' के नाम से जाना जाता है, C और C++<ref name="Koranne2011"/> के लिए एक रूढ़िवादी कचरा संग्राहक है, जिसे हंस बोएहम, एलन डेमर्स और मार्क वेइज़र द्वारा विकसित किया गया है।<ref name="homepage">Hans Boehm, [https://hboehm.info/gc/ A garbage collector for C and C++]</ref><ref name="appel">[[Andrew W. Appel]] (1998), ''[https://www.cs.princeton.edu/~appel/modern/c/ Modern Compiler Implementation in C]'' - "[https://www.cs.princeton.edu/~appel/modern/c/software/boehm/ Boehm Conservative Garbage Collector]", </ref>
Boehm GC [[X11 लाइसेंस]] के समान एक अनुमेय [[अनुमेय निःशुल्क सॉफ़्टवेयर लाइसेंस]] तहत वितरित [[मुफ्त सॉफ्टवेयर]] है। इस संग्राहक का परिचय देने वाला पहला पेपर 1992 में प्रकाशित हुआ।<ref>H. J. Boehm and D. Chase, [https://grothoff.org/christian/teaching/2007/4705/boecha.pdf "A Proposal for Garbage-Collector-Safe C Compilation"], The Journal of C Language Translation, Volume 4 Number 2 December 1992, pages 126-141 </ref>
 


बोएहम जीसी एक मुक्त सॉफ़्टवेयर है जो [[X11 लाइसेंस]] के समान एक अनुमेय मुफ़्त सॉफ़्टवेयर लाइसेंस के तहत वितरित किया जाता है। इस संग्राहक का परिचय देने वाला पहला पेपर 1992 में प्रकाशित हुआ था।<ref>H. J. Boehm and D. Chase, [https://grothoff.org/christian/teaching/2007/4705/boecha.pdf "A Proposal for Garbage-Collector-Safe C Compilation"], The Journal of C Language Translation, Volume 4 Number 2 December 1992, pages 126-141 </ref>
== डिज़ाइन ==
== डिज़ाइन ==



Revision as of 08:35, 18 July 2023

Boehm–Demers–Weiser Garbage Collector
Other namesbdwgc
Original author(s)Hans-Juergen Boehm
Developer(s)Ivan Maidanski, et al.
Initial release1988; 36 years ago (1988)
Stable release
8.0.6 / September 28, 2021; 3 years ago (2021-09-28)
Preview release
8.2.0 / September 29, 2021; 3 years ago (2021-09-29)
Written inC
Typegarbage collector
Licensesimilar to X11 (free software)

बोहेम-डेमर्स-वेइज़र गार्बेज कलेक्टर, जिसे अक्सर बोएहम जीसी के नाम से जाना जाता है, C और C++[1] के लिए एक रूढ़िवादी कचरा संग्राहक है, जिसे हंस बोएहम, एलन डेमर्स और मार्क वेइज़र द्वारा विकसित किया गया है।[2][3]

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

डिज़ाइन

हंस बोहम कलेक्टर के संचालन का वर्णन इस प्रकार करते हैं:

The collector uses a mark-sweep algorithm. It provides incremental and generational collection under operating systems which provide the right kind of virtual memory support. (Currently this includes SunOS[45], IRIX, OSF/1, Linux, and Windows, with varying restrictions.) It allows finalization code to be invoked when an object is collected. It can take advantage of type information to locate pointers if such information is provided, but it is usually used without such information.

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

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

ऑपरेशन

कचरा संग्राहक अधिकांश असंशोधित सी प्रोग्रामों के साथ, बस प्रतिस्थापित करके काम करता है malloc() साथ GC_MALLOC() कॉल, प्रतिस्थापित करना realloc() साथ GC_REALLOC() कॉल, और हटाना free() कॉल करता है.[1]नीचे दिए गए कोड का टुकड़ा दिखाता है कि कोई पारंपरिक मॉलोक और सी में फ्री के बजाय बोहेम का उपयोग कैसे कर सकता है।[6]

#include <assert.h>
#include <stdio.h>
#include <gc.h>

int main(void)
{
    int i;
    const int size = 10000000;

    GC_INIT();
    for (i = 0; i < size; ++i)
    {
        int **p = GC_MALLOC(sizeof *p);
        int *q = GC_MALLOC_ATOMIC(sizeof *q);

        assert(*p == 0);
        *p = GC_REALLOC(q, 2 * sizeof *p);
        if (i == size-1)
            printf("Heap size = %zu\n", GC_get_heap_size());
    }

    return 0;
}

पूर्णता के लिए, बोहेम स्पष्ट रूप से आवंटन रद्द करने का समर्थन करता है GC_FREE().[7] सभी प्रतिस्थापन प्रीप्रोसेसर मैक्रोज़ का उपयोग करके किया जा सकता है।

उपयोग और पोर्ट

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

संदर्भ

  1. 1.0 1.1 Koranne, Sandeep (2011), Handbook of Open Source Tools, Springer, pp. 151–154, Bibcode:2011hoos.book.....K, ISBN 978-1441977199.
  2. Hans Boehm, A garbage collector for C and C++
  3. Andrew W. Appel (1998), Modern Compiler Implementation in C - "Boehm Conservative Garbage Collector",
  4. H. J. Boehm and D. Chase, "A Proposal for Garbage-Collector-Safe C Compilation", The Journal of C Language Translation, Volume 4 Number 2 December 1992, pages 126-141
  5. Using the Garbage Collector as Leak Detector
  6. Using the Garbage Collector: A simple example
  7. "कचरा संग्रहकर्ता इंटरफ़ेस". www.hboehm.info.
  8. "Exaloop/Codon". GitHub.
  9. libgc-d


बाहरी संबंध