कंप्यूटर विज्ञान में सभी समस्याओं को अप्रत्यक्ष के एक और स्तर द्वारा हल किया जा सकता है… अप्रत्यक्ष की बहुत अधिक परतों की समस्या को छोड़कर
आपका दृष्टिकोण तुरंत कचरा संग्रहण की समस्या को हल नहीं करता है, लेकिन केवल इसे एक स्तर तक ले जाता है। और किस कीमत पर! अब, हर मेमोरी एक्सेस दूसरे पॉइंटर डेरेफेरेंस के माध्यम से जाती है। हम परिणाम स्थान को कैश नहीं कर सकते हैं, क्योंकि यह इस बीच स्थानांतरित हो सकता है, हमें हमेशा ऑब्जेक्ट आईडी के माध्यम से जाना चाहिए। अधिकांश प्रणालियों में, यह अप्रत्यक्ष स्वीकार्य नहीं है, और दुनिया को रोकने के लिए कम कुल रनटाइम लागत माना जाता है।
मैंने कहा कि आपका प्रस्ताव केवल समस्या को हल करता है, इसे हल नहीं करता है। मुद्दा ऑब्जेक्ट आईडी के पुन: उपयोग के आसपास है। ऑब्जेक्ट आईडी अब हमारे पॉइंटर्स के समतुल्य हैं, और केवल पते की एक सीमित मात्रा है। यह बोधगम्य है (एक 32 बिट सिस्टम पर esp) कि आपके कार्यक्रम के जीवनकाल के दौरान, INT_MAX से अधिक वस्तुओं का निर्माण किया गया होगा, जैसे एक पाश में
while (true) {
Object garbage = new Object();
}
यदि हम प्रत्येक ऑब्जेक्ट के लिए ऑब्जेक्ट आईडी बढ़ाते हैं, तो हम किसी बिंदु पर आईडी से बाहर निकल जाएंगे। इसलिए हमें यह पता लगाना होगा कि कौन सी आईडी अभी भी उपयोग में हैं और जो मुफ्त हैं ताकि उन्हें पुनः प्राप्त किया जा सके। जाना पहचाना? अब हम वापस वर्ग एक पर हैं।