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