2012-07-03 9 views
5

मेरा जावास्क्रिप्ट काफी सरल है। यह सिर्फ डेटा डाउनलोड करने और इसे मेरी स्क्रीन पर प्रदर्शित करने के लिए AJAX को कॉल करना जारी रखता है। मैं उन डेटा को सीधे अपडेट करके उन डीओएम तत्व का पुन: उपयोग करता हूं (jquery's $ (DIV) .empty() फ़ंक्शन का उपयोग करके और फिर एक और सामग्री संलग्न करें)। हालांकि, रात भर चलने के बाद, मेरा कंप्यूटर लटकता है और कुछ ऐसा करने जैसा लगता है।रात रात जावास्क्रिप्ट चलाने के बाद सिस्टम लटका

मैं कुछ फ़ायरफ़ॉक्स एडन द्वारा स्मृति खपत को देखने का प्रयास करता हूं। दो घंटे चलते समय, स्मृति 200 एमबी बढ़ सकती है, लेकिन मुझे यकीन नहीं है कि यह केवल मेरे जेएस या अन्य कारणों से होता है।

मुझे इस मुद्दे के बारे में कुछ सवाल है। 1. क्या इसकी निगरानी करने का कोई अच्छा तरीका है (जैसे कि विशिष्ट वेब पेज द्वारा कितनी मेमोरी का उपयोग किया जाता है, कितना सीपीयू संसाधन कब्जा कर लिया जाता है, और कैसे?) 2. क्या जेएस वेब ऐप डिज़ाइन करने के लिए कोई सामान्य तरीका है ऐसी समस्या से बचने के लिए?

धन्यवाद, किसी भी टिप्पणी की सराहना की है!

+0

आप किस ब्राउज़र का उपयोग कर रहे हैं? (संपादित करें: ओह, मैं एफएफ देखता हूं)। क्या आपने विभिन्न ब्राउज़रों के साथ प्रयोग दोहराया है? –

+0

क्या आप पहले से ही फ़ायरबग प्रोफाइलर का उपयोग कर रहे हैं? इसके साथ आप देख सकते हैं कि आपकी कॉल कहां जा रही है। – megakorre

+0

क्या आपने किसी भिन्न कोण से समस्या के करीब आने के बारे में सोचा है। AJAX का उपयोग करने के बजाय, पृष्ठ को फिर से लोड करने के लिए बस मेटा-रीफ्रेश टैग का उपयोग करें? – NotMe

उत्तर

3

फ़ायरफ़ॉक्स के कुछ संस्करण संदर्भ कचरे को कचरा संग्रह रणनीति के रूप में उपयोग करते हैं। संदर्भ गिनती कुछ परिस्थितियों में स्मृति रिसाव का कारण बनती है।

इंटरनेट एक्सप्लोरर और मोजिला फायरफॉक्स दो वेब ब्राउज़र सबसे आमतौर पर जावास्क्रिप्ट में मेमोरी लीक के साथ जुड़े रहे हैं। में अपराधी दोनों ब्राउज़र्स घटक ऑब्जेक्ट मॉडल है जो DOM ऑब्जेक्ट्स को प्रबंधित करने के लिए उपयोग किया जाता है। देशी विंडोज COM और मोज़िला दोनों XPCOM दोनों स्मृति आवंटन और पुनर्प्राप्ति के लिए संदर्भ-गिनती कचरा संग्रह का उपयोग करते हैं। संदर्भ गणना जावास्क्रिप्ट के लिए उपयोग किए गए मार्क-एंड-स्वीप कचरा संग्रह के साथ हमेशा संगत नहीं होती है। यह आलेख जावास्क्रिप्ट कोड में मेमोरी लीक के आसपास काम करने के तरीकों पर केंद्रित है। फ़ायरफ़ॉक्स में COM परत मेमोरी हैंडलिंग और आईई के बारे में अधिक जानने के लिए संसाधन देखें।

http://www.ibm.com/developerworks/web/library/wa-memleak/

0

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

2

से मैं एक कूबड़ स्मृति की खपत क्योंकि jQuery में, हर बार एक ajax कॉल किया जाता है, एक jqXHR अनुरोध और बाद प्रसंस्करण (कॉलबैक, स्थिति जांच के प्रबंधन के लिए बनाया जाता है है, आदि।)। मुझे jQuery दस्तावेज़ों में कुछ भी दिखाई नहीं देता है, जहां ये स्वचालित रूप से साफ़ हो जाते हैं। तो, आपकी जावास्क्रिप्ट बस उन्हें पिलिंग कर रहा है।

http://api.jquery.com/jQuery.ajax/

संबंधित मुद्दे