जावा में कचरा संग्रह: आप सभी को पता होना चाहिए



जावा में कचरा संग्रह पर यह लेख आपको यह बताता है कि यह कैसे काम करता है, इसके बारे में एक स्पष्ट विचार है, यह जावा में कचरा संग्रहण के तहत विभिन्न प्रकार और तरीके हैं।

एक सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है और यदि आप ऐसी स्थिति में आते हैं, जहां आपके प्रोग्राम में अप्रयुक्त डेटा हैं और आपको नहीं पता है कि इसे कैसे संभालना है, तो जावा में कचरा संग्रह काम में आता है। इसलिए, मैं इन कार्यों को संभालने में आपकी सहायता करने के लिए यह लेख लिख रहा हूं।

एक रिश्ता जावा है

मैं निम्नलिखित क्रम में विषयों को कवर करूंगा:





आएँ शुरू करें!

जावा में कचरा संग्रह क्या है?

जावा में, प्रोग्रामर इस मुद्दे को नष्ट करने के लिए सामना करते हैं वस्तुएं जो उपयोग से बाहर हैं। लेकिन गारबेज कलेक्टर के साथ, इस पर आसानी से ध्यान दिया जा सकता है। इस गारबेज कलेक्टर का मुख्य उद्देश्य वस्तुओं को नष्ट करके स्मृति को मुक्त करना है जिसमें संदर्भ नहीं है। तकनीक के रूप में जाना जाता है कचरा इकठा करना।



इसे एक प्रोग्राम के रूप में भी माना जाता है जो स्वचालित मेमोरी प्रबंधन करने में मदद करता है। कब JVM पर चलाए जाते हैं, ऑब्जेक्ट्स को ढेर पर बनाया जाता है, जो वास्तव में मेमोरी का एक हिस्सा है जो प्रोग्राम के लिए समर्पित है। आखिरकार, कुछ वस्तुओं की अब आवश्यकता नहीं होगी। द कचरा इकट्ठा करने वाला इन अप्रयुक्त वस्तुओं को ढूंढता है और कुछ मेमोरी को मुक्त करने के लिए उन्हें हटा देता है।

  • मेमोरी को डी-आवंटित नहीं करने वाले प्रोग्राम अंततः तब टूट सकते हैं जब आवंटित करने के लिए सिस्टम में कोई मेमोरी नहीं बची हो। इन सभी कार्यक्रमों में मेमोरी लीक होने की बात कही गई है।
  • जावा में कचरा संग्रह एक कार्यक्रम के जीवनकाल के दौरान स्वचालित रूप से होता है, मेमोरी को डी-आवंटित करने की आवश्यकता को समाप्त करता है और इसलिए मेमोरी लीक से बचता है।
  • जैसे तरीके नि: शुल्क() C में और हटाना () C ++ में उपयोग किया जाता है लेकिन, जावा में, यह स्वचालित रूप से किया जाता है। इसलिए, बेहतर स्मृति प्रबंधन प्रदान करता है।

अब, आइए समझते हैं कि यह स्वचालित कचरा संग्रहण जावा में कैसे काम करता है।

ध्यान दें : किसी वस्तु को कचरा संग्रहण के योग्य कहा जाता है यदि वह अनुपलब्ध है।



कचरा संग्रहण कैसे काम करता है?

कचरा संग्रह हीप मेमोरी के साथ और भी काम करने की एक प्रक्रिया है निशान या अगम्य वस्तुओं की पहचान कर उन्हें संघनन से नष्ट कर सकते हैं।

जावा में कचरा संग्रह एक स्वचालित प्रक्रिया है और प्रोग्रामर को वस्तुओं को हटाने के लिए स्पष्ट रूप से चिह्नित नहीं करना पड़ता है। कार्यान्वयन मुख्य रूप से रहता है । प्रत्येक JVM कचरा संग्रहण को लागू कर सकता है। केवल आवश्यकता यह है कि यह जेवीएम विनिर्देश को पूरा करे।

हालांकि कई JVM उपलब्ध हैं, ओरेकल का हॉटस्पॉट अब तक सबसे आम है क्योंकि यह कचरा संग्रह विकल्पों का एक मजबूत और परिपक्व सेट प्रदान करता है।

  • हॉटस्पॉट में कई कचरा संग्रहकर्ता हैं जो विभिन्न उपयोग के मामलों के लिए अनुकूलित हैं, और सभी कचरा संग्रहकर्ता एक ही मूल प्रक्रिया का पालन करते हैं।
  • पहले चरण में, अपरिचित वस्तुएँ कचरा संग्रहण के लिए तैयार के रूप में पहचाना और चिह्नित किया गया है।
  • दूसरे चरण में, चिह्नित ऑब्जेक्ट हटा दिए जाते हैं। वैकल्पिक रूप से, कचरा कलेक्टर द्वारा वस्तुओं को हटाने के बाद मेमोरी को कॉम्पैक्ट किया जा सकता है, इसलिए शेष वस्तुएं ढेर की शुरुआत में एक सन्निहित ब्लॉक में होती हैं। संघनन प्रक्रिया मौजूदा वस्तुओं को आवंटित स्मृति के ब्लॉक के बाद क्रमिक रूप से नई वस्तुओं को स्मृति आवंटित करना आसान बनाती है।

हॉटस्पॉट के सभी कचरा संग्रहकर्ता एक पीढ़ीगत संग्रह रणनीति को लागू करते हैं जो आयु के अनुसार वस्तुओं को वर्गीकृत करती है। जनरेशनल कचरा संग्रह के पीछे तर्क यह है कि अधिकांश वस्तुएं अल्पकालिक हैं और निर्माण के तुरंत बाद कचरा संग्रह के लिए तैयार हो जाएंगी।

अब देखते हैं कि विभिन्न प्रकार के कचरा संग्रहकर्ता क्या हैं।

कचरा इकट्ठा करने वाले के प्रकार

जेवीएम चार अलग-अलग कचरा संग्राहक प्रदान करता है, ये सभी जनरेशनल हैं। हर एक के अपने फायदे और सीमाएँ हैं। उपयोगकर्ता के साथ झूठ का उपयोग करने के लिए किस कूड़े के संग्रहकर्ता की पसंद और थ्रूपुट और एप्लिकेशन पॉज़ में कई अंतर हो सकते हैं।

कचरा बीनने वाले 4 प्रकार के होते हैं।

  • सीरियल कचरा कलेक्टर (जीसी) :सभी कचरा संग्रहण कार्यक्रम एक ही धागे में सिलसिलेवार तरीके से आयोजित किए जाते हैं। प्रत्येक कचरा संग्रहण के बाद संघनन निष्पादित किया जाता है।
  • समानांतर / थ्रूपुट GC: कई धागे छोटे / छोटे कचरा संग्रह के लिए उपयोग किए जाते हैं। एक एकल धागा का उपयोग प्रमुख कचरा संग्रह और पुरानी पीढ़ी के संघनन के लिए किया जाता है। इसके अलावा, समानांतर संस्करण प्रमुख कचरा संग्रह और पुरानी पीढ़ी के संघनन के लिए कई थ्रेड्स का उपयोग करता है।
  • सीएमएस कलेक्टर :पैरलल के समान एल्गोरिथ्म का उपयोग करते हुए छोटे / छोटे कचरा संग्रह के लिए कई थ्रेड्स का उपयोग किया जाता है। कचरे के संग्रह की अधिकांशता बहु-थ्रेडेड है, लेकिन सीएमएस अनुप्रयोग घटनाओं को कम करने के लिए अनुप्रयोग प्रक्रियाओं के साथ समवर्ती रूप से चलता है। कोई संघनन नहीं किया जाता है।
  • जी 1 कलेक्टर :यह कचरा कलेक्टर मूल रूप से सीएमएस के प्रतिस्थापन के रूप में अभिप्रेत है। यह सीएमएस की तरह समानांतर और समवर्ती है, लेकिन पुराने कचरा संग्रहकर्ताओं की तुलना में यह काफी अलग तरीके से काम करता है।

आइए जावा में कचरा संग्रहण के लाभों को समझते हैं।

लाभ

  • जावा कचरा संग्रह का सबसे बड़ा लाभ यह है कि यह स्वचालित रूप से होता है डिलीट को हैंडल करता है अप्रयुक्त वस्तुओं या कुछ वस्तुओं जो स्मृति संसाधनों को मुक्त करने के लिए दुर्गम हैं।
  • कचरा संग्रह अब कई लोकप्रिय प्रोग्रामिंग भाषाओं का एक नया मानक घटक है।
  • यह जावा मेमोरी-कुशल बनाता है। ऐसा इसलिए है क्योंकि कचरा कलेक्टर ढेर स्मृति से अपरिचित वस्तुओं को हटा देता है।
  • यह है स्वचालित रूप से किया कचरा कलेक्टर द्वारा जो JVM का एक हिस्सा है।

सर्वोत्तम प्रथाएं

जावा कचरा संग्रह के लिए अनुकूल सबसे अच्छा तरीका जेवीएम पर झंडे स्थापित करना है। झंडे में उपयोग किए जाने वाले कचरा कलेक्टर को समायोजित करने की क्षमता है। यह बैकएंड प्रसंस्करण के लिए इसे सबसे उपयुक्त बनाने में मदद करता है जहां कचरा संग्रहण के लिए लंबे समय तक चलने के लिए स्वीकार्य हैं।

यहां ध्यान देने वाली एक और बात है, सीएमएस कचरा कलेक्टर को ठहराव को कम करने के लिए डिज़ाइन किया गया है जो इसे जीयूआई अनुप्रयोगों के लिए आदर्श बनाता है जहां जवाबदेही बहुत महत्वपूर्ण है। अतिरिक्त ठीक-ट्यूनिंग को ढेर या उसके वर्गों के आकार को बदलकर और कचरा संग्रह दक्षता को मापने के द्वारा पूरा किया जा सकता है।

आइए इस कार्यक्रम को देखें।

वर्ग Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('a का मान =' + a) System.out.println ('मान का b =' + b)} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3) 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

इस मामले में, दोऑब्जेक्ट और दो संदर्भ चर बनाए जाते हैं। यदि आप एक और कमांड e3 = Null जोड़ते हैं,दो संदर्भ चर एक ही वस्तु को इंगित करेंगे। और अगर चर का कोई संदर्भ नहीं है, तो e3 = e2e3.showData () इस बिंदु पर, ऑब्जेक्ट को इंगित करने वाले कोई संदर्भ नहीं हैं और यह कचरा संग्रह के लिए योग्य हो जाता है।

यह हमें जावा के लेख में इस us कचरा संग्रह के अंत में लाता है। हमने सीखा है कि कैसे अनुपयोगी वस्तुओं को ढेर और विभिन्न प्रकार के संग्रह में हटाया जाए।

अगर आपको यह लेख 'जावा में कचरा संग्रह' पर मिला है, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। हम यहां आपकी यात्रा में हर कदम पर आपकी मदद करने के लिए हैं, हम एक पाठ्यक्रम के साथ आते हैं, जो छात्रों और पेशेवरों के लिए बनाया गया है, जो जावा डेवलपर बनना चाहते हैं।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया जावा में इस 'कचरा संग्रह' के टिप्पणी अनुभाग में इसका उल्लेख करें ' और हम जितनी जल्दी हो सके आप को वापस मिल जाएगा।