2010-07-30 8 views
5

मैं एचटीएमएल 5 एप्लिकेशन में नया हूं। और मैं घर में सॉफ्टवेयर बना रहा हूँ। इसका मतलब है कि मैं उपयोगकर्ताओं को फ़ायरफ़ॉक्स/वेबकिट के केवल हालिया संस्करण का उपयोग करने के लिए मजबूर कर सकता हूं।फ़ायरफ़ॉक्स/वेबकिट की जावास्क्रिप्ट में स्मृति रिसाव है? (आईई को छोड़कर)

  1. परिपत्र संदर्भ:

    मैं इन बिंदु में जे एस मेमोरी लीक के बारे में के विषय में कई दस्तावेज को देखा।

  2. इवेंट हैंडलर।
  3. क्लोजर।

जैसा कि मुझे लगता है, यह केवल आईई (पुराने संस्करण) की समस्या है। लेकिन मैं इसके बारे में निश्चित नहीं कर सकता। तो मैं पूछ रहा हूं कि मुझे अपनी स्थिति में इस मुद्दे को हल करना होगा। अगर मुझे करना चाहिए, तो समाधान क्या है, और मुझे क्या अतिरिक्त मुद्दों का ख्याल रखना है?

उत्तर

2

जावास्क्रिप्ट लाइब्रेरी का उपयोग करें और आप ठीक होंगे। jQuery इसे बनाता है ताकि आप परिपत्र संदर्भ, बंद कर सकें जो jQuery ऑब्जेक्ट्स और ईवेंट हैंडलर को वापस देख सकें जिन्हें आपने कभी साफ नहीं किया है। यदि आवश्यक हो तो jQuery स्वचालित रूप से अनलोड पर सभी टुकड़े उठाएगा और यह किसी भी ब्राउज़र में लीक करने से स्मृति को भी बनाए रखेगा।

यदि आप एक जेएस-आधारित एप्लिकेशन विकसित कर रहे हैं जिसमें पृष्ठ कभी (या शायद ही कभी) रीफ्रेश नहीं होता है, तो आपको लीक के बारे में चिंता करनी पड़ सकती है, लेकिन प्लगइन बनाकर वे आसानी से असाधारण हैं जिनके पास एक सदस्य हैं जो सभी सदस्य वस्तुओं को नष्ट कर देते हैं और डोम तत्व। JQuery .remove फ़ंक्शन डोम तत्वों, हैंडलर, और उस तत्व से जुड़े किसी भी अन्य चीज़ को हटा देता है।

तो बस एक जे एस पुस्तकालय का उपयोग करें और अगर आप जे एस कोड का एक बहुत विकसित करने के लिए है, सावधान रहना और एक डिजाइन पैटर्न को साफ करने के लिए आसान है कि (jQuery के प्लगइन डिज़ाइन पैटर्न की तरह) का उपयोग करें।

+0

उत्तर के लिए धन्यवाद। मैंने jQuery/कैप्चिनो आदि जैसे उच्च अमूर्त परत के बारे में सुना लेकिन मुझे लगता है कि मुझे उनका उपयोग करने से पहले निम्नतम स्तर के बारे में सीखना चाहिए। अगर मुझे निम्न स्तर नहीं पता है, तो अबास्ट्रक्शन लेयर अस्पृश्य ब्लैक-बॉक्स बन जाएगा, और डिबगिंग दर्द से भरा होगा। – Eonil

+0

निम्न स्तर जानने के साथ समस्या यह पता है कि कैसे हर ब्राउज़र डोम व्यवहार करता है कि आपके पास है (जो दुर्भाग्य से हर ब्राउज़र एक बेतहाशा अलग जीसी है।)। हालांकि अगर आप सिर्फ एक ब्राउज़र के बारे में जानने के लिए चाहते हैं, तो आप प्रयोग और मेमोरी लीक पा सकते हैं। फ़ायरफ़ॉक्स एक बहुत अच्छा जे एस इंजन जो मैं कभी नहीं किया है पृष्ठों के बीच रिसाव कर पाए है। हालांकि आप इसे (एक एक सब js/Ajax एप्लिकेशन में) की तरह एक पेज के उपयोग के दौरान रिसाव कर सकते हैं ... –

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