मैं बहुत से रूखे जावा प्रश्नों के माध्यम से पढ़ रहा हूं finalize()
और यह इस तरह की भयावहता को दर्शाता है कि किसी ने वास्तव में यह स्पष्ट नहीं किया है कि अंतिम रूप () संसाधनों को साफ करने का एक अविश्वसनीय तरीका है। मैंने किसी को टिप्पणी करते देखा कि वे इसका उपयोग कनेक्शन्स को साफ करने के लिए करते हैं, जो वास्तव में डरावना है क्योंकि एक गारंटी के करीब आने का एकमात्र तरीका है कि एक कनेक्शन बंद है, अंत में कोशिश (कैच) को लागू करना है।
मुझे सीएस में स्कूल नहीं दिया गया था, लेकिन मैं जावा में पेशेवर रूप से अब एक दशक के करीब प्रोग्रामिंग कर रहा हूं और मैंने कभी किसी को finalize()
उत्पादन प्रणाली में कभी भी लागू नहीं देखा । इसका मतलब यह नहीं है कि इसके उपयोग नहीं हैं, या जिन लोगों के साथ मैंने काम किया है वे इसे सही कर रहे हैं।
तो मेरा प्रश्न यह है finalize()
कि लागू करने के लिए ऐसे कौन से मामले हैं, जिन्हें भाषा के भीतर किसी अन्य प्रक्रिया या वाक्य रचना के माध्यम से अधिक मज़बूती से नियंत्रित नहीं किया जा सकता है?
कृपया विशिष्ट परिदृश्य या अपना अनुभव प्रदान करें, बस एक जावा पाठ पुस्तक को दोहराएं, या अंतिम उपयोग के लिए पर्याप्त नहीं है, जैसा कि इस प्रश्न का इरादा नहीं है।
finalize()
। हालाँकि, प्लेटफ़ॉर्म लाइब्रेरी कोड , जैसे कि SocketInputStream
, कॉल करने वाले की ओर से देशी संसाधनों का प्रबंधन करता है, ऐसा रिसोर्स लीक के जोखिम को कम करने की कोशिश करता है (या समतुल्य तंत्रों का उपयोग करता है, जैसे PhantomReference
कि बाद में जोड़े गए।) इसलिए पारिस्थितिकी तंत्र को उनकी आवश्यकता है। भले ही 99.9999% डेवलपर्स कभी नहीं लिखेंगे।