अतीत में, इंटरनेट एक्सप्लोरर में सामान्य जावास्क्रिप्ट चर और डीओएम ऑब्जेक्ट्स के बीच संदर्भों के साथ कुछ समस्याएं थीं। तो, अगर मैं सही ढंग से याद है, इस
var e = document.createElement('div');
var x = { elementReference: e };
e.jsReference = x;
की तरह एक परिपत्र संदर्भ नहीं कचरा-एकत्र किया जाएगा, भले ही e
और x
करने के लिए कोई अन्य संदर्भ थे। ऐसा इसलिए है क्योंकि आईई ने डीओएम तत्वों और जावास्क्रिप्ट के लिए कचरा संग्रह के विभिन्न तरीकों का उपयोग किया था।
अब, मुझे विश्वास था कि इस समस्या को पहले से ही उच्च संस्करणों के आईईएस में उपचार किया गया था, लेकिन शायद यह नहीं था। ऐसे सभी समस्याग्रस्त संदर्भों को खोजने का प्रयास करें और यदि आपको अब उनकी आवश्यकता नहीं है तो मैन्युअल रूप से उन्हें हटा दें।
e.jsReference = null;
x.elementReference = null;
संपादित करें: आईई 8
में टेस्ट मैं इस साधारण परीक्षण वेबपेज लिखा था।
<html>
<head>
<title>Leak test</title>
<script>
function leak() {
var e = document.createElement('div');
var x = { elementReference: e };
e.jsReference = x;
}
function test() {
for (var i = 0; i < 10000; i++)
leak();
alert('Done');
}
</script>
</head>
<body>
<input type="button" value="test" onclick="test();" />
</body>
</html>
मैंने आईई 8 में इसका परीक्षण किया, क्योंकि मेरे पास इस मशीन पर आईई 9 स्थापित नहीं है। हालांकि, यह अभी भी प्रासंगिक हो सकता है क्योंकि यह दिखाता है कि यह मुद्दा आईई के हाल के संस्करणों में भी मौजूद था और इस प्रकार यह आईई 9 में भी जारी रह सकता है।
मैंने पृष्ठ खोला और स्मृति उपयोग देखा। बटन के प्रत्येक दबाने के बाद, कई एमबी द्वारा स्मृति उपयोग में वृद्धि हुई। वेबपेज को रीफ्रेश करने के बाद, बिल्कुल कुछ भी नहीं हुआ। आईई बंद करने के बाद, स्मृति उपयोग अपने मूल स्थिति में लौट आया।
आप आईई 9 में अपने लिए यह कोशिश कर सकते हैं। बेशक, आप शायद अपने कोड में 10000 सर्कुलरली रेफरिंग ऑब्जेक्ट्स आवंटित नहीं कर रहे हैं, लेकिन संभवतः आप बड़ी ऑब्जेक्ट्स बनाते हैं जिनमें कुछ परिपत्र संदर्भ हो सकते हैं जो आपको अभी तक नहीं मिला है।
यह एड्रेस के लिए एक बहुत मुश्किल मुद्दा है। मुझे लगता है कि यह कई कारणों से हो सकता है, क्षमा करें :-( – Sebas
बड़े पैमाने पर आवेदन के लिए कोड स्निपेट प्रदान करने का कोई तरीका नहीं है। अगर मैं स्निपेट प्रदान कर सकता हूं, तो मेरे पास पहले से ही मेरा जवाब होगा क्योंकि इससे मुझे समस्या को कम करने की आवश्यकता होगी कोड के एक विशिष्ट क्षेत्र में। जैसा कि मेरा प्रश्न बताता है, मैं उन लोगों की तलाश में हूं जो मेरे जैसा ही स्थिति में भाग चुके हैं: पृष्ठ रीलोड (केवल आईई 9) के बाद मेमोरी रिसाव, साथ ही साथ कुछ स्पष्टीकरण कि यह कैसे हो सकता है एक सामान्य अर्थ में, –
मेरा नया उत्तर रे देखें, अभी इस समस्या को समझ लिया गया है (उत्पाद की नवीनतम रिलीज के साथ एक ही समस्या थी) –