स्पष्ट रूप से कोड जो खड़ा है, वह अतिरिक्त स्मृति लेगा जब तक कि डोम तत्व अभी भी डोम से जुड़ा हुआ न हो। लेकिन मुझे लगता है कि आप यह पूछ रहे हैं कि डीओएम तत्व अब उपयोग में आने के बाद अतिरिक्त मेमोरी का उपयोग जारी रखेगा या नहीं।
अद्यतन: जॉय के जवाब (जो उन्होंने बाद में हटा दिया है) के लिए धन्यवाद, मैं कुछ समय बिताया memory leaks in javascript पर पढ़ने, और ऐसा लगता है नीचे पैरा में मेरी मान्यताओं सही नहीं हैं। क्योंकि डोम तत्वों शुद्ध कचरा संग्रहण का उपयोग नहीं करते, इस तरह एक परिपत्र संदर्भ में दोनों डोम तत्व और से कभी जारी किया जा रहा जावास्क्रिप्ट वस्तु रोका जा सके। हालांकि, मुझे विश्वास है कि इस उत्तर का शेष अभी भी सही है।
जावास्क्रिप्ट इंजन कचरा संग्रहण कैसे कार्यान्वित करते हैं, इस बारे में गहन ज्ञान के बिना, मैं विषय पर आधिकारिक रूप से बात नहीं कर सकता। हालांकि, कचरा संग्रह की मेरी सामान्य समझ से मुझे लगता है कि आपका कोड इस अर्थ में "सुरक्षित" होगा कि
#something
तत्व डीओएम से हटा दिया गया है, जिसके परिणामस्वरूप
MyClass
ऑब्जेक्ट में केवल उस ऑब्जेक्ट का संदर्भ होगा जिसमें कोई अन्य कनेक्शन नहीं है । कचरा कलेक्टर का ग्राफ एल्गोरिदम और पहचान करने के लिए है कि डोम तत्व और उसके
MyClass
वस्तु "अंतरिक्ष में तैरते रहे हैं" में सक्षम बाकी सब से असंबद्ध होना चाहिए।
इसके अलावा, jQuery डीओएम से निकाले जाने के बाद दिए गए डीओएम तत्व से जुड़े डेटा और घटनाओं को पट्टी करने के अपने रास्ते से बाहर चला जाता है। documentation से:
jQuery सुनिश्चित करता है कि डेटा जब डोम तत्वों jQuery विधियों के माध्यम से निकाल दिए जाते हैं हटा दिया जाता है, और उपयोगकर्ता पृष्ठ छोड़ जब।
तो तुम jQuery लगातार का उपयोग यह सोचते हैं, आप केवल एक-तरफ़ा संदर्भ होता है एक बार वस्तु डोम वैसे भी, जो इसे
कि बहुत आसान
संभव कचरा कलेक्टर को पता है के लिए प्राप्त कर सकते हैं बनाता है से निकाल दिया जाता इन वस्तुओं से छुटकारा पाएं।
तब तक जब तक आपके पास DOM तत्व हटा दिए जाने के बाद MyClass
ऑब्जेक्ट का संदर्भ देने के लिए कुछ और नहीं है, तो आपके पास स्मृति रिसाव नहीं होना चाहिए।
आप वैश्विक जेएस ऑब्जेक्ट में संदर्भ क्यों नहीं सहेजते? –
@ant_Ti मैं दो तरह का उपयोग करना चाहता हूं। उदाहरण के लिए, एक ईवेंट हैंडलर में मैं 'obj' तक पहुंच बनाना चाहता हूं, लेकिन मैं 'obj' से तत्व तक पहुंचने में सक्षम होना चाहूंगा। –
मैंने परिपत्र संदर्भों के उल्लेखों को हटाने के लिए प्रश्न संपादित किया है, क्योंकि इस उदाहरण में एक नहीं है। (हालांकि ऐसा लगता है कि यह हो सकता है) – mikerobi