जब आप इसकी आवश्यकता नहीं रखते हैं, तो आप इसके संदर्भों को हटाकर ऑब्जेक्ट्स को साफ़ कर सकते हैं। आपको इसे स्पष्ट रूप से नहीं करना है। एक स्पष्ट सफाई के लिए संदर्भ को शून्य सेट करने की आवश्यकता होगी, जिससे कचरा कलेक्टर को संकेत मिलेगा कि वस्तु एकत्र की जा सकती है। यह संकेत प्रत्येक ऑब्जेक्ट के लिए आंतरिक संदर्भ गणना के कारण काम करता है, जो आंतरिक रूप से बनाए रखा जाता है। उदाहरण के लिए
C a = new C(); //create an object of class C and assign it to 'a'
a = new C(); //create another object of class C and assign it to 'a'. The older object is no longer referred to. It is now eligible for GC.
अंतिम रूप देने के बेहतर विकल्प() के आधार कितना को अंतिम रूप देने() अपनी स्थिति मदद कर रहा है पर कर रहे हैं।
अक्सर, सबसे अच्छा अभ्यास एपीआई में करीबी() या निपटान स्रोत() जैसी विधि प्रदान करना है जो कॉलर को एपीआई को स्वयं को साफ करने में मदद करने की अनुमति देगा। उदाहरण के लिए, java.sql.Connection class does this। यह अंतिम() विधि से बेहतर है, क्योंकि JVM अंतिम() विधि को कॉल करेगा। अक्सर अंतिम() विधि JVM में कम प्राथमिकता वाले थ्रेड द्वारा चलाया जाएगा, जिससे कुछ अजीब त्रुटियां हो सकती हैं।
कनेक्शन वर्ग के मामले में, जेवीएम को अंतिम रूप देने के लिए इंतजार करना बहुत सारे अनुप्रयोगों में महंगा साबित होता है, क्योंकि डेटाबेस एक समय में केवल इतना कनेक्शन स्वीकार कर सकता है। इसलिए, अधिकांश प्रोग्रामर एक कनेक्शन ऑब्जेक्ट पर स्पष्ट रूप से() को कॉल करेंगे।
आपके मामले में, यह कुछ ऐसा ही में अनुवाद करना चाहिए (और इस संदर्भ में, अंत में ब्लॉक हमेशा चलाने के लिए गारंटी है)
try
{
ThirdPartyInitialize();
// use third party component in this try block
}
finally
{
ThirdPartyTerminate();
}
इस के समान है कैसे कनेक्शन वर्ग भी सबसे में प्रयोग किया जाता है स्थितियों।
स्रोत
2009-09-04 18:02:27
मैं * नहीं * कहूँगा कि अंतिम रूप देने() एक नाशक के समान है। आपका बाकी का पाठ ठीक है, लेकिन यह बड़े पैमाने पर पहले बयान के विपरीत है। आप कभी नहीं जानते कि अंतिम रूप कब() कहा जाएगा। तो यह एक सी ++ विनाशक के विपरीत है, जिसे किसी ऑब्जेक्ट को दायरा छोड़ दिया जाता है या हटा दिया जाता है। –
जब कोई ऑब्जेक्ट कचरा इकट्ठा होता है तो फाइनल को बुलाया जाएगा, लेकिन कोई कचरा नहीं होगा जब यह कचरा इकट्ठा किया जाएगा, इसलिए अंतिमकर्ता को समय-समय पर नहीं बुलाया जा सकता है। –