अमूर्तता में विफलता वास्तव में यह तथ्य नहीं है कि कचरा-संग्रह गैर-नियतात्मक है, बल्कि इस विचार में है कि वस्तुओं को उन चीजों में "रुचि" है जो वे संदर्भ रखते हैं, और उन चीजों में रुचि नहीं रखते हैं, जिनके लिए वे पकड़ नहीं रखते हैं। संदर्भ। यह देखने के लिए कि किसी ऑब्जेक्ट के परिदृश्य पर विचार करें, जो इस बात का एक काउंटर रखता है कि किसी विशेष नियंत्रण को कितनी बार चित्रित किया जाता है। निर्माण पर, यह नियंत्रण के "पेंट" इवेंट की सदस्यता लेता है, और निपटान पर यह सदस्यता समाप्त कर देता है। क्लिक ईवेंट केवल एक फ़ील्ड बढ़ाता है, और एक विधि getTotalClicks()
उस फ़ील्ड का मान लौटाती है।
जब काउंटर ऑब्जेक्ट बनाया जाता है, तो इसे नियंत्रण के भीतर संग्रहीत किए जाने वाले एक संदर्भ का कारण होना चाहिए, यह निगरानी कर रहा है। नियंत्रण वास्तव में काउंटर ऑब्जेक्ट के बारे में परवाह नहीं करता है, और काउंटर ऑब्जेक्ट, और इसके संदर्भ के रूप में मौजूद होने पर बस खुश हो जाएगा, लेकिन जब तक संदर्भ मौजूद है, तब तक यह उस ऑब्जेक्ट के ईवेंट हैंडलर को हर बार कॉल करेगा। यह खुद को पेंट करता है। यह क्रिया पूरी तरह से नियंत्रण के लिए बेकार है, लेकिन उस व्यक्ति के लिए उपयोगी होगी जो कभी भी getTotalClicks()
ऑब्जेक्ट पर कॉल करेगा ।
यदि उदाहरण के लिए एक नई "पेंट-काउंटर" ऑब्जेक्ट बनाने की विधि थी, तो नियंत्रण पर कुछ कार्रवाई करें, यह देखें कि नियंत्रण कितनी बार फिर से पेंट किया गया था, और फिर पेंट-काउंटर ऑब्जेक्ट को छोड़ दें, ऑब्जेक्ट घटना के लिए भी सदस्यता लिया जाएगा हालांकि कोई भी कभी भी परवाह नहीं करेगा यदि वस्तु और उसके लिए सभी संदर्भ बस गायब हो गए। हालांकि, वस्तुएं संग्रह के लिए योग्य नहीं होंगी, हालांकि, जब तक कि नियंत्रण स्वयं नहीं है। यदि विधि एक थी जिसे नियंत्रण के जीवनकाल [एक प्रशंसनीय परिदृश्य] के भीतर कई हजार बार लागू किया जाएगा, तो यह एक मेमोरी अतिप्रवाह का कारण बन सकता है लेकिन इस तथ्य के लिए कि एन इनवोकेशन की लागत ओ (एन ^ 2) या ओ होगी (एन ^ 3) जब तक सदस्यता-प्रसंस्करण बहुत कुशल नहीं था और अधिकांश संचालन वास्तव में किसी भी पेंटिंग को शामिल नहीं करते थे।
इस विशेष परिदृश्य को एक मजबूत के बजाय काउंटर ऑब्जेक्ट के लिए एक कमजोर संदर्भ रखने के नियंत्रण देकर दिया जा सकता है। एक कमजोर-सदस्यता वाला मॉडल मददगार है, लेकिन सामान्य स्थिति में काम नहीं करता है। मान लीजिए कि एक ऑब्जेक्ट को नियंत्रित करने की इच्छा के बजाय, जो एक एकल नियंत्रण से एक तरह की घटना की निगरानी करता है, एक एक इवेंट-लॉगर ऑब्जेक्ट चाहता था जो कई नियंत्रणों की निगरानी करता था, और सिस्टम का इवेंट-हैंडलिंग तंत्र ऐसा था कि प्रत्येक नियंत्रण को एक संदर्भ की आवश्यकता थी एक अलग घटना-लकड़हारा वस्तु के लिए। उस स्थिति में, इवेंट लकड़हारे के नियंत्रण को जोड़ने वाली वस्तु केवल तब तक जीवित रहना चाहिए जब तक दोनोंनियंत्रण की निगरानी की जा रही है और घटना लकड़हारा उपयोगी है। यदि न तो नियंत्रण और न ही घटना लकड़हारा जोड़ने वाली घटना के लिए एक मजबूत संदर्भ रखता है, तो यह "उपयोगी" होने के बावजूद भी अस्तित्व में नहीं रहेगा। यदि या तो एक मजबूत घटना होती है, तो लिंकिंग ऑब्जेक्ट का जीवनकाल बेकार हो सकता है, भले ही दूसरा व्यक्ति मर जाए।
यदि किसी वस्तु का कोई संदर्भ ब्रह्मांड में कहीं भी मौजूद नहीं है, तो वस्तु को सुरक्षित रूप से बेकार माना जा सकता है और अस्तित्व से समाप्त कर दिया जा सकता है। तथ्य यह है कि एक वस्तु के लिए एक संदर्भ मौजूद है, हालांकि, इसका मतलब यह नहीं है कि वस्तु "उपयोगी" है। कई मामलों में, वस्तुओं की वास्तविक उपयोगिता अन्य वस्तुओं के संदर्भों के अस्तित्व पर निर्भर करेगी जो - जीसी परिप्रेक्ष्य से - उनके लिए पूरी तरह से असंबंधित हैं।
यदि वस्तुओं को निर्दिष्ट रूप से अधिसूचित किया जाता है जब कोई भी उनमें रुचि नहीं रखता है, तो वे उस जानकारी का उपयोग करने में सक्षम होंगे ताकि यह सुनिश्चित किया जा सके कि जिस किसी को भी उस ज्ञान से लाभ होगा। इस तरह की अधिसूचना के अभाव में, हालांकि, यह निर्धारित करने का कोई सामान्य तरीका नहीं है कि वस्तुओं को "उपयोगी" माना जाता है यदि कोई केवल उन संदर्भों के सेट को जानता है जो मौजूद हैं, न कि उन संदर्भों से जुड़ा अर्थ अर्थ। इस प्रकार, कोई भी मॉडल जो मानता है कि स्वचालित संसाधन प्रबंधन के लिए संदर्भों का अस्तित्व या गैर-अस्तित्व पर्याप्त है, भले ही जीसी तुरंत वस्तु परित्याग का पता लगा सके।