मुझे लगता है कि .on()
के माध्यम से पंजीकृत ईवेंट हैंडलर $.cache
में आयोजित किए गए हैं। मैं यह भी देखता हूं कि ईवेंट हैंडलर $(elem).data()
में भी आयोजित किए जाते हैं।
वस्तुओं $.cache
में आयोजित डोम नोड्स, जिन पर ईवेंट पंजीकृत हैं देखें। जब डीओएम नोड्स अलग हो जाते हैं, तो यह स्मृति रिसाव की ओर जाता है, और इससे .off()
कॉल अनिवार्य है।
मैं एक स्थिति है जब डोम नोड (जो करने के लिए मैं ईवेंट हैंडलर संलग्न) अलग किया जा रहा है, जहां मैं नहीं जानता है। जबकि मैं अपने कोड में उस डोम नोड का संदर्भ रख सकता हूं और साफ़ करने के लिए .off()
पर कॉल कर सकता हूं, यह अच्छा प्रतीत नहीं होता है, क्योंकि यह पता नहीं है कि डोम नोड को हटाया जा रहा है।
ऐसा करने का सबसे अच्छा तरीका क्या है?
1. तत्व और संचालकों के बीच संबंध एक सीरियल नंबर के माध्यम से बनाए रखा है (और हैंडलर तत्व की बात नहीं कर रहा है), मैं एक कारण है कि .cache प्रविष्टियों स्मृति के लिए नेतृत्व चाहिए नहीं दिख रहा है रिसाव। किसी कारण से, मुझे नहीं पता कि यह कितना न्यायसंगत है, कैश प्रविष्टि तत्व का जिक्र कर रही है। मुझे यह जानकर उत्सुकता है कि तत्व का संदर्भ क्यों आवश्यक है। 2. मुझे उन मामलों के बारे में पता नहीं है जिनमें तत्व का विस्तार करने से ऑब्जेक्ट्स (हैंडलर) के संदर्भ सीधे नहीं हो सकते हैं। यदि विस्तारक संदर्भ धारण कर सकता है, तो मुझे संदर्भों को पकड़ने के लिए समानांतर संरचना की आवश्यकता नहीं है। – user968903
@ user968903: 1. यदि आप jQuery को हटाने के दौरान संबंधित '$ .cache' प्रविष्टि को हटाते हैं तो आप केवल लीक का नेतृत्व करते हैं। सीरियल नंबर दोनों के बीच एकमात्र कनेक्शन है, इसलिए यदि सीरियल '123' वाला तत्व हटा दिया गया है, लेकिन jQuery '$ .cache' में प्रविष्टि' 123' को नहीं हटाता है, तो वह प्रविष्टि अब डेटा का जिक्र कर रही है जो अब नहीं एक समान तत्व है, और कभी साफ नहीं किया जाएगा। औचित्य संभावित मेमोरी लीक था जो मुख्य रूप से आईई 6 और शायद आईई 7 में मौजूद था। अब जब वे ब्राउज़र लगभग चले गए हैं, मुझे नहीं पता कि यह दृष्टिकोण अच्छा है या नहीं। –
@ user968903: 2. मुझे लगता है कि आधुनिक ब्राउज़र आमतौर पर निकाले जाने पर तत्वों को साफ़ करते हैं, इसलिए शायद यह अब तक कोई समस्या नहीं है। मेरा मानना है कि यह मुख्य रूप से आईई 6/7 था जिसमें मुद्दों थे। मुझे लगता है कि बंद होने के संबंध में अभी भी संभावित मेमोरी लीक हो सकती हैं, जहां एक तत्व के पास एक हैंडलर होता है जो इसके परिवर्तनीय दायरे में एक परिपत्र संदर्भ होता है, लेकिन मुझे यकीन नहीं है कि यह आज कोई मुद्दा है या नहीं। मैं देखूंगा कि मुझे क्या मिल सकता है। –