2009-06-10 12 views
8

के साथ मेमोरी समस्याएं हैं जिन पर मैं काम करता हूं उसके लिए यूआई हाल ही में Ext.js के साथ फिर से किया गया था और मैंने देखा है कि आईई का मेमोरी उपयोग इसे देखने पर बहुत बड़ा लगता है। IE का उपयोग करते समय Ext.js के साथ स्मृति समस्याएं ज्ञात हैं?क्या Ext.js

+0

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

उत्तर

9

पहली बात जो आपके प्रश्न में मुझ पर कूदती है वह यह है कि आप इसे IE में देख रहे हैं। मेरी टीम हाल ही में एक ही मुद्दे (आईई पर Extjs) के माध्यम से चला गया। यह पता चला है कि एक्स अपराधी नहीं है बल्कि आईई की संभावना है।

'आईई बंद स्मृति रिसाव' के लिए एक त्वरित गूगल आपको स्पष्टीकरण मिल जाएंगे, लेकिन बुनियादी सार इस प्रकार है:

आईई दो अलग-अलग इंजन का उपयोग करता है डोम और जावास्क्रिप्ट का प्रबंधन करने के। जब जावास्क्रिप्ट एक डोम तत्व बनाने के लिए कॉल करता है, तो जावास्क्रिप्ट इंजन इसे बनाने के लिए दूसरे तक पहुंच जाता है। यदि आप किसी DOM तत्व पर किसी ईवेंट में जावास्क्रिप्ट संलग्न करते हैं, तो एक लिंक DOM पक्ष से जावास्क्रिप्ट पक्ष में वापस बनाया जाता है।

समस्या इस तथ्य में निहित है कि प्रत्येक इंजन का अपना कचरा संग्रह होता है और दूसरे इंजन में नहीं देख सकता है। इसलिए परिपत्र संदर्भ वास्तव में आने में आसान हैं जो बड़ी मात्रा में स्मृति को बहुत तेज़ी से खा सकते हैं।

0

जहां तक ​​मेरा संबंध है, मैंने ExtJS में उल्लेखनीय स्मृति रिसाव के बारे में नहीं सुना है। हालांकि मुझे यकीन है कि कुछ लोग हैं, वे आमतौर पर बहुत तेजी से तय हो जाते हैं, और समुदाय इतना बड़ा है कि अधिकांश बग ज्ञात हैं।

सुनिश्चित करें कि आपका डिज़ाइन अलग-अलग घटकों पर आधारित है जिसे आप अधिकतर समय से जोड़ते समय हटा सकते हैं और हटा सकते हैं, एक एक्स्टजेस वेबपृष्ठ केवल एक बार लोड हो जाएगा और मेम आपके द्वारा दिए गए अतिरिक्त घटकों से भरा हो जाता है यह। एक घटक का उपयोग करने के बाद आप Ext.destroy (this.el) का उपयोग करके कुछ मेम मुक्त कर सकते हैं।

इसके अलावा, सुनिश्चित करें कि आप किसी भी घटक या ऑब्जेक्ट को ट्रैक करने के लिए फ़ायरबग का उपयोग करें जिसे हटा दिया जाना चाहिए था।

1

मुझे लगता है कि गैर अनुभवी प्रोग्रामर के लिए ExtJS के साथ प्रोग्रामिंग करते समय मेमोरी लीक बनाना काफी आसान है। यह स्वयं पर ExtJS समस्या नहीं है। यह ExtJS प्रोग्रामिंग प्रतिमान है जो प्रोग्रामर को आसानी से ऐसी गलतियों को करने देता है।

मेरे अनुभव से मैंने एक्स्टजेस का उपयोग करके एक स्ट्रैगफोर्डवर्ड AJAX चैट करने की कोशिश करते समय मेमोरी रिसाव बनाया है। जब कुछ वस्तुओं को लगातार AJAX कॉलबैक (जैसे डेटास्टोर, ग्रिड मैनिप्लेशंस) के भीतर बनाया जाता है, तो इन ऑब्जेक्ट्स को रिहा नहीं किया जाता है और नष्ट कर दिया जाता है। ExtJS के साथ मेमोरी लीक से बचने के लिए उपयोग की जाने वाली विशेष और बहुत चालाक तकनीकें होनी चाहिए, और यह केवल AJAX या कॉलबैक से संबंधित नहीं है।

सब कुछ, ExtJS महान पुस्तकालय है, लेकिन इसे सावधानी से उपयोग किया जाना चाहिए।

+1

स्टोर के लिए एक ऑटोडिस्टॉय संपत्ति है जो इससे मदद कर सकती है। – geographika

0

this thread in their forums देखें जो अनाथ तत्वों के कारण Ext 2.2 में बहुत से रिसाव को शामिल करता है। ऐसा लगता है कि Ext 2.2.1 उनमें से अधिकांश को तय किया गया है।

समस्या अभी भी खुला है, बीटीडब्ल्यू। ;)

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