2012-02-20 12 views
9

मुझे परेशान है कि क्यों अन्य ऐप की तुलना में फ़ायरफ़ॉक्स में मेरी ऐप की मेमोरी इतनी तेज हो जाती है।भारी AJAX ऐप में फ़ायरफ़ॉक्स विशिष्ट मेमोरी बढ़ जाती है

मूल रूप से, ऐप एक अच्छी मात्रा में AJAX का उपयोग करता है, जिसमें बुनियादी कार्रवाई एचटीएमएल के औसत स्तर वाले पदों के नए सेट लोड करने के लिए होती है, और आम तौर पर बड़ी छवियां होती हैं। प्रति पोस्ट कुल भार डेटा (भारित छवियों सहित) 1 एमबी, शायद 900k के तहत है। JQuery 1.7.1 का उपयोग करना।

क्रोम मेमोरी में स्थिर लगता है, लेकिन फ़ायरफ़ॉक्स में, प्रत्येक पोस्ट लोड के परिणामस्वरूप लगभग 20 एमबी नई मेमोरी उपयोग होती है। चूंकि बहुत सी पोस्ट लोड हो जाती हैं, इसलिए आप जल्दी से 1 जीबी और यहां तक ​​कि 1.4 जीबी मेमोरी में आते हैं, और चीजें जल्दी ही रुक जाती हैं।

फ़ायरफ़ॉक्स पर खोदने पर, मैंने 'हटाएं' का उपयोग करके बंद करने और किसी भी बाहरी चर को खत्म करने की कोशिश की। कोई बड़ा सुधार नहीं। मैंने फिर कार्यक्षमता को हटाने शुरू कर दिया, और ऐसा लगता है कि सब कुछ योगदान देता है।

टूलटिप्स को हटाने, एफबी विजेट्स (प्रति पोस्ट एक टिप्पणी विजेट) की अत्यधिक पुनः लोडिंग, मैंने प्रति पोस्ट 10 एमबी नई मेमोरी में एक बड़ा सुधार किया है।

लेकिन उससे परे, मैं बहुत कम नहीं हो सकता! असल में, अगर मैं $ .post() के माध्यम से नई एचटीएमएल + छवियों (फिर से लगभग 900k) लोड करता हूं तो प्रत्येक पोस्ट में नई मेमोरी के ~ 8 एमबी जोड़े जाते हैं, भले ही नई छवियों में "डिस्प्ले: कोई नहीं" हो। (फायरबग को अक्षम करने का भी प्रयास किया)।

यह स्मृति प्रबंधन में मेरा पहला प्रयास है, लेकिन यह बहुत अधिक ओवरहेड जैसा लगता है, और अजीब है क्योंकि मुझे नहीं लगता कि स्मृति वास्तव में क्रोम में इस तरह बढ़ती है। ऐसा लगता है कि मुझे लोड होने वाले डेटा की मात्रा के साथ मेमोरी बढ़ाना चाहिए, 10 एक्स नहीं! (या क्रोम में बिल्कुल भी कोई भी अच्छा नहीं होगा ...)

क्या यह वास्तव में उचित है? इस समस्या को कम करने के लिए समस्याओं के बारे में कोई विचार या मैं क्या कर सकता हूं?

धन्यवाद!

अद्यतन:

के रूप में बोरिस जिसे उपयुक्त मनाया, स्मृति वृद्धि लगभग पूरी तरह से छवियों (कम से कम 80%) की वजह से है। लेकिन फिर से लोड की गई छवियों का आकार बहुत अधिक (10x) है। एक और बात जो मैंने सीखा है: स्मृति - अगर मैं बस एक नया खाली टैब खोलता हूं, तो स्मृति जल्दी से गिर जाती है और लगभग सभी अतिरिक्त छवि संबंधित स्मृति गायब हो जाती है। मैं अनुमान लगा रहा हूं कि जीसी लात मार रहा है, और इस प्रकार बोरिस अनुमान लगाता है, ऐसा लगता है कि यह एक जीसी मुद्दा है?

यदि ऐसा है, तो मैं जांच कैसे कर सकता हूं कि यह केवल एफएफ में स्वाभाविक रूप से क्यों नहीं चल रहा है? जेएस में इसे ट्रिगर करने के तरीके हैं? जैसा कि मैंने उल्लेख किया है, मैंने बंद करने और बंद करने की कोशिश की ...

एक अन्य विचार, divs के बजाय छवि तत्वों (jQuery के माध्यम से) बाध्यकारी खराब हो सकता है? मैंने सोचा कि jQuery ने उन सभी चीजों के साथ निपटाया है।

+1

क्या आप फ़ायरफ़ॉक्स में फ़ायरबग चला रहे हैं? यदि हां, तो क्या होगा यदि आप इसे अक्षम करते हैं? –

+0

जैसा कि मैंने प्रश्न में उल्लेख किया है - मैंने फायरबग को अक्षम करने का प्रयास किया। कोई फर्क नहीं पड़ता। –

+0

यह बहुत अजीब है। क्या आप समस्या दिखाने वाली साइट से लिंक कर सकते हैं? –

उत्तर

1

यदि आप वास्तव में बहुत सारे AJAX का उपयोग कर रहे हैं, तो आप $ .ajax() विकल्प "कैश" को गलत पर सेट करने का प्रयास कर सकते हैं। ब्राउजर मेमोरी पर असर डालने के लिए, डेटा की बड़ी मात्रा में होना होगा।

प्रदर्शन कारणों से, आप आमतौर पर स्मृति में जितना संभव हो उतना कुशलतापूर्वक करना चाहते हैं, और जितना संभव हो सके डीओएम को लिखना चाहते हैं।

यह हो सकता है कि आप जिस एफएफ का उपयोग कर रहे हैं उसका संस्करण स्मृति के साथ-साथ अन्य ब्राउज़रों को पुनः प्राप्त नहीं कर रहा है, जिसे आप इसकी तुलना कर रहे हैं।

ऐसा लगता है कि बंद होने की तरह अपराधी नहीं होगा। यह एक पुरानी आईई समस्या की तरह लगता है।

यदि यह वास्तव में एक मुद्दा है, तो आप बड़ी वस्तुओं को स्पष्ट रूप से नष्ट करने का प्रयास कर सकते हैं जब आप जानते हैं कि उनका अब और उपयोग नहीं किया जा रहा है।

1

आवश्यक रूप से एक उत्तर नहीं है, लेकिन क्या आप इन मुद्दों को फ़ायरफ़ॉक्स (13) के नवीनतम संस्करण के साथ रखते हैं? इस रिलीज के साथ बहुत सारी मेमोरी और प्रदर्शन संबंधी मुद्दे हैं और मोज़िला ने कहा है कि वे उन्हें सुधारने के लिए काम कर रहे हैं।

इसके अलावा, यदि आपके पास पृष्ठ लोड पर बहुत सारी चीज़ें लोड हो रही हैं और शुरुआत में उन्हें प्रदर्शित नहीं कर रही हैं तो आप इन छवियों को गतिशील रूप से लोड करने के लिए jquery के waypoints प्लगइन का उपयोग कर सकते हैं। यह पेज लोड पर ब्राउज़र को बहुत अधिक वजन से छुटकारा दिलाएगा।

आशा है कि इनमें से कोई भी सहायक होगा।

http://support.mozilla.org/en-US/kb/firefox-slow-how-make-it-faster http://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-ram

और http://imakewebthings.com/jquery-waypoints/: यहाँ कुछ पठन सामग्री है कि आप आगे मदद मिल सकती है

2

मैंने देखा है मेरा 2GB RAM के हिट

मैं अपने गोदी में एक विजेट जो इस आदेश, जिसके कारण फ़ाइल में सहेजा जाता है चलाता है है:

killall -c firefox 
sleep 1 
open -a Firefox 
sleep 1 
exit 

एफएफ को रीसेट करने के लिए त्वरित तरीका और अपने सभी टैब वापस प्राप्त करें। इसे अधिकतर दिनों में करने की आवश्यकता है :) अगर यह फ़ायरबग के लिए नहीं था तो मैं अब क्रोम पर रहूंगा

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