साथ काम करते हुए जावा में कक्षाएं , निर्माणकर्ताओं का उपयोग एक वर्ग के उदाहरण को शुरू करने के लिए किया जाता है। मेमोरी का उपयोग करते हुए ऑब्जेक्ट के लिए आवंटित किया जाता है बिल्डर लेकिन वस्तु के बाद जीवन-चक्र समाप्त हो जाता है और वस्तु उपयोग में नहीं रह जाती है, स्मृति को त्यागना और छोड़ना पड़ता है। यह वह जगह है जहाँ विनाशकारी है चित्र में आता है। इस लेख में, हम जावा में विनाशकों के बारे में निम्नलिखित क्रम में जानेंगे:
एक विनाशकारी क्या है?
एक विध्वंसक एक विशेष है जैसे ही किसी वस्तु का जीवन-चक्र समाप्त होता है, उसे स्वतः ही कहा जाता है। एक विध्वंसक को डी-आवंटित और मुक्त मेमोरी कहा जाता है। विध्वंसक कहे जाने पर निम्नलिखित कार्य निष्पादित हो जाते हैं।
- रिलीज लॉक जारी करना
- सभी डेटाबेस कनेक्शन या फ़ाइलों को बंद करना
- सभी नेटवर्क संसाधनों को जारी करना
- अन्य हाउसकीपिंग कार्य
- एक वस्तु के जीवनकाल के दौरान आवंटित ढेर स्थान को पुनर्प्राप्त करना
जावा में डिस्ट्रक्टर्स को फाइनल के रूप में भी जाना जाता है, गैर-नियतात्मक हैं। स्मृति का आवंटन और रिलीज़ अनुमानित रूप से नियंत्रित किया जाता है जावा में कचरा संग्रहकर्ता ।
जावा में फ़ाइनलीज़र को सी # फ़ाइनलिज़र के विपरीत उनके मंगलाचरण की गारंटी नहीं दी जाती है, जो कि .NET रन-टाइम के दौरान मंगाई जाती है।
एक विध्वंसक के प्रमुख गुणों पर एक नजर डालते हैं:
- ओवरलोडिंग या वंशानुक्रम की अनुमति नहीं है
- पहुँच संशोधक या मापदंडों का कोई विनिर्देश नहीं
- स्वचालित आह्वान और उपयोगकर्ता से कोई स्पष्ट कॉल नहीं
- कक्षाओं में उपयोग किया जाता है लेकिन संरचनाओं में नहीं
- वर्ग का क्रम सबसे व्युत्पन्न वर्ग से सबसे कम व्युत्पन्न वर्ग तक भिन्न होता है
- यह भी कहा जाता है कि वस्तु उदाहरण अब पहुँच के लिए योग्य नहीं है
- ऑब्जेक्ट द्वारा प्रबंधित प्रबंधित संसाधनों के बजाय संयुक्त राष्ट्र-प्रबंधित संसाधनों को जारी करने के लिए उपयोग किया जाता है
कचरा इकट्ठा करने वाला
कूड़ा बीनने वाला एक कार्यक्रम है जो पर चलता है जावा वर्चुअल मशीन उन वस्तुओं को हटाकर स्मृति को पुनर्प्राप्त करना जो अब उपयोग में नहीं हैं या अपने जीवन-चक्र को समाप्त कर चुके हैं। किसी वस्तु को कचरा संग्रहण के लिए योग्य कहा जाता है यदि और केवल वस्तु अनुपलब्ध हो तो।
आइए समझने की कोशिश करते हैं कि जावा में कचरा संग्रहण कैसे काम करता है:
कचरा संग्रह मुख्य रूप से अनुपलब्ध वस्तुओं को चिह्नित करने या पहचानने और स्मृति को मुक्त करने के लिए उन्हें हटाने की प्रक्रिया है। कार्यान्वयन जेवीएम में रहता है, केवल आवश्यकता यह है कि यह जेवीएम विनिर्देशों को पूरा करे। ये जावा में विभिन्न प्रकार के कचरा संग्रहकर्ता हैं:
वस्तुओं की एक सरणी बनाना
- सीरियल गारबेज कलेक्टर
- समानांतर / थ्रूपुट कचरा कलेक्टर
- सीएमएस कलेक्टर
- जी 1 कलेक्टर
आइए जावा में कचरा संग्रहण के कुछ फायदों पर एक नजर डालते हैं:
- यह स्वचालित रूप से अप्रयुक्त वस्तुओं को हटा देता है जो मेमोरी को खाली करने के लिए पहुंच से बाहर हैं
- कचरा संग्रह जावा मेमोरी को कुशल बनाता है
- जेवीएम में कार्यान्वयन जीवन के बाद से इसे स्पष्ट रूप से कहने की आवश्यकता नहीं है
- कचरा संग्रह कई प्रोग्रामिंग भाषाओं का एक महत्वपूर्ण और मानक घटक बन गया है
आइए यह समझने की कोशिश करें कि जावा में विनाशकों का उपयोग क्यों नहीं किया जाता है।
कंस्ट्रक्टर बनाम डिस्ट्रक्टर: एक कंस्ट्रक्टर और एक डिस्ट्रक्टर के बीच अंतर
बिल्डर | मिटाने वाला |
एक क्लास की एक आवृत्ति को इनिशियलाइज़ करने के लिए कंस्ट्रक्टर का उपयोग किया जाता है | जब वे उपयोग में नहीं होते हैं, तो वस्तुओं को हटाने या नष्ट करने के लिए एक विध्वंसक का उपयोग किया जाता है |
जब कक्षा का एक उदाहरण बनाया जाता है, तो कंस्ट्रक्टर्स को बुलाया जाता है | किसी वस्तु के नष्ट होने या जारी होने पर विनाशकों को कहा जाता है |
स्मृति आवंटन | स्मृति को रिहा करता है |
ओवरलोडिंग संभव है | ओवरलोडिंग की अनुमति नहीं है |
उन्हें तर्क रखने की अनुमति है | किसी विध्वंसक में कोई तर्क पारित नहीं किया जा सकता है |
जावा फाइनल () विधि
किसी भी डेवलपर के लिए कचरा कलेक्टर के निष्पादन के लिए मजबूर करना काफी मुश्किल हो जाता है, लेकिन इसके लिए एक विकल्प है। हम वस्तु का उपयोग कर सकते हैं। अंतिम रूप दें () जावा में विध्वंसक की तरह काम करने वाली विधि।
एक Object.finalize () विधि सभी में विरासत में मिली है जावा ऑब्जेक्ट । यह एक विध्वंसक नहीं है, लेकिन इसका उपयोग प्रोग्राम को बंद करने से पहले बाहरी संसाधनों जैसे फ़ाइल आदि को बंद करने के लिए सुनिश्चित करने या अतिरिक्त सुरक्षा प्रदान करने के लिए किया जाता है। आप इसे स्वयं विधि या system.runFinalizersOnExit (सत्य) का उपयोग करके कॉल कर सकते हैं।
अंतिम रूप () विधि का उपयोग अत्यधिक अनुशंसित नहीं है क्योंकि यह बहुत असुरक्षित हो सकता है और कुछ मामलों में गलत तरीके से उपयोग किया जाता है।
आइए एक सरल उदाहरण लेते हैं कि कचरा कलेक्टर को कॉल करने के लिए अंतिम रूप () का उपयोग कैसे किया जा सकता है।
सार्वजनिक वर्ग A {सार्वजनिक शून्य अंतिम रूप () फेंकता है थ्रोबेबल {System.out.println ('ऑब्जेक्ट को कचरा कलेक्टर द्वारा नष्ट कर दिया जाता है')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {A परीक्षण = नया A () परीक्षण = शून्य System.gc ()}
यह हमें इस लेख के अंत में लाता है जहां हमने जावा में विनाशकारी के बारे में सीखा है। मुझे आशा है कि आप इस ट्यूटोरियल में आपके साथ साझा किए गए सभी के साथ स्पष्ट हैं।
यदि आप 'जावा में विनाशकारी' पर यह लेख प्रासंगिक पाते हैं, तो देखें दुनिया भर में फैले 250,000 से अधिक संतुष्ट शिक्षार्थियों के नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी।
हम यहां आपकी यात्रा में हर कदम पर आपकी मदद करने के लिए और एक पाठ्यक्रम के साथ आए हैं, जो छात्रों और पेशेवरों के लिए बनाया गया है, जो जावा डेवलपर बनना चाहते हैं। पाठ्यक्रम आपको जावा प्रोग्रामिंग में एक शुरुआत देने के लिए डिज़ाइन किया गया है और आपको विभिन्न के साथ-साथ कोर और उन्नत जावा अवधारणाओं के लिए प्रशिक्षित करता है पसंद सीतनिद्रा में होना और ।
यदि आप किसी भी प्रश्न के उत्तर में आते हैं, तो 'डिस्ट्रक्टोर इन जावा' के टिप्पणी अनुभाग में अपने सभी प्रश्न पूछने के लिए स्वतंत्र महसूस करें और हमारी टीम जवाब देने में प्रसन्न होगी।