मैं समझना चाहता हूं कि किस प्रकार का कोड जावास्क्रिप्ट में मेमोरी लीक का कारण बनता है और नीचे लिपि बनाता है। हालांकि, जब मैं ओएस एक्स पर सफारी 6.0.4 में स्क्रिप्ट चलाता हूं तो गतिविधि मॉनीटर में दिखाए गए मेमोरी खपत में वास्तव में वृद्धि नहीं होती है।मैं जावास्क्रिप्ट में मेमोरी रिसाव कैसे बना सकता हूं?
क्या मेरी स्क्रिप्ट के साथ कुछ गलत है या यह अब आधुनिक ब्राउज़र के साथ कोई समस्या नहीं है? http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Closures#Closures
संपादित करें: बग की वजह से लीक करने के लिए ऊपर दिए गए कोड को जाहिरा तौर पर किया गया है तय: http://jibbering.com/faq/notes/closures/#clMem
लेकिन मेरे
<html>
<body>
</body>
<script>
var i, el;
function attachAlert(element) {
element.onclick = function() { alert(element.innerHTML); };
}
for (i = 0; i < 1000000; i++) {
el = document.createElement('div');
el.innerHTML = i;
attachAlert(el);
}
</script>
</html>
स्क्रिप्ट गूगल के जावास्क्रिप्ट स्टाइल गाइड के बंद खंड पर आधारित है सवाल बनी हुई है: क्या कोई जावास्क्रिप्ट कोड का यथार्थवादी उदाहरण प्रदान करने में सक्षम होगा जो आधुनिक ब्राउज़रों में स्मृति को रिसाव करता है?
इंटरनेट पर कई लेख हैं जो सुझाव देते हैं कि मेमोरी लीक जटिल एकल पृष्ठ अनुप्रयोगों के लिए एक मुद्दा हो सकता है लेकिन मुझे अपने ब्राउज़र में एक उदाहरण खोजने में कठिनाई हो रही है।
आपके उत्तर के लिए धन्यवाद! क्या आप चित्रण के लिए मेरी स्क्रिप्ट का एक संशोधित संस्करण पोस्ट कर पाएंगे? – user2327642
हो गया। उम्मीद है कि मदद करता है। – Stephen
धन्यवाद, लेकिन मुझे नहीं लगता कि यह एक प्रासंगिक उदाहरण है। यदि मैं बनाए गए सभी तत्वों के संदर्भ संग्रहीत करता हूं तो मुझे उम्मीद नहीं है कि उन्हें कचरा इकट्ठा किया जाए। मेरे कोड का बिंदु यह है कि बंद करने के लिए एक परिपत्र संदर्भ बनाता है। सर्कुलर संदर्भ आमतौर पर कचरा कलेक्टर के लिए कोई समस्या नहीं है, लेकिन जैसा कि मैंने अब सीखा - वहां एक बग था जहां कचरा संग्रह कुछ ब्राउज़रों में काम नहीं करेगा जब परिपत्र संदर्भ में शामिल वस्तुओं में से एक एक डीओएम तत्व था। – user2327642