"जारी" द्वारा मेरा मतलब है कि क्लासलोडर शेष के लिए कोई संदर्भ नहीं है।जब क्लासलोडर जारी किया जाता है तो सिंगलेट्स पर अंतिम रूप दिया जाता है?
हम ऐसी समस्या में भाग रहे हैं जहां अक्सर-पुन: नियोजित जावा ईई एप्लिकेशन परमजन स्पेस खा जाता है। विश्लेषण से पता चलता है कि जावा ईई ऐप में एक सिंगल ने एप्लिकेशन के बाहर एप्लिकेशन-क्लासलोडर ऑब्जेक्ट्स (जावा ईई नियमों के उल्लंघन में) के संदर्भ पारित किए हैं और ऐप बेरोजगार होने पर उन्हें साफ़ नहीं कर रहा है।
मान लीजिए कि सिंगलटन या क्लास ऑब्जेक्ट में कोई अन्य संदर्भ शेष नहीं है, क्या सिंगलटन के अंतिम रूप() को कॉल किया जाएगा जब इसकी कक्षा का क्लासलोडर जारी किया जाएगा? मैं वहां दुष्ट उलटी संदर्भों को साफ़ करना चाहता हूं। या मैं कैच -22 में हूं जहां अंतिम रूप से कॉल नहीं किया जाएगा जब तक कि क्लासलोडर स्वयं कचरा-संग्रह नहीं हो सकता है - और इस प्रकार दुष्ट बाहरी संदर्भों के कारण कभी नहीं कहा जाएगा?
मुख्य प्रश्न यहाँ शायद है:
एक वर्ग वस्तु इस मामले जहां इसकी classloader अभी तक नहीं किया जा सकता में कचरा-एकत्र हो जाएगा? यह क्लासलोडर व्यवहार के विनिर्देश पर निर्भर हो सकता है, या कार्यान्वयन-निर्भर हो सकता है।
संदर्भ (अन्य प्रकार! ;-)) की सराहना की जाएगी, लेकिन आवश्यक नहीं है।
आप WeakReference (रों) और WeakHashMap का उपयोग कर विचार मजबूत (नियमित) संदर्भ के बजाय ClassLoaders के संदर्भ पार कर लेते हैं। – Stefan