2014-09-28 17 views
9

की तुलना में आईओएस 8 में अधिक मेमोरी का उपयोग करके फोनगैप मेरे पास फोनगैप ऐप है। एक एचटीएमएल 5 कैनवास खेल। ऐसा लगता है कि आईओएस 8 (8.0.2 समेत) आईओएस 7 में काफी अधिक मेमोरी का उपयोग करना प्रतीत होता है।आईओएस 7

अधिक मेमोरी का उपयोग करने के अलावा, जेएस कचरा कलेक्टर कभी भी उस मेमोरी को मुक्त नहीं कर रहा है। यह "मुक्त" स्मृति को सही ढंग से एकत्रित कर रहा है, लेकिन इसे उपयोग करने के लिए आईओएस के लिए कभी भी इसे जारी नहीं किया गया है।

आईफोन 5 एस के साथ आईओएस 7 के तहत इंस्ट्रूमेंट्स आवंटन का उपयोग कर स्मृति उपयोग यहां दिया गया है। जैसा कि आप देख सकते हैं कि यह एक स्तर को लोड और अनलोड करते समय ऊपर और नीचे चला जाता है। इसके अलावा स्मृति उपयोग आईओएस 8.0.2 के साथ एक iPhone 5 एस पर चल रहे एक ही एप्लिकेशन 23MB के आसपास में बहुत कम है,,

PhoneGap Canvas app running under iOS 7

41.81mb

पर maxing यहाँ है। जैसा कि आप देख सकते हैं कि स्मृति उपयोग कभी नीचे नहीं जाता है और यह काफी अधिक स्मृति का उपयोग करता है। असल में स्मृति उपयोग हमेशा के लिए बढ़ता रहता है क्योंकि मैं उसी स्तर को लोड और अनलोड करता हूं। यह उच्च के रूप में ऊपर नहीं जाता है, जो मुझे लगता है कि जेएस कचरा कलेक्टर से स्मृति का सही ढंग से उपयोग कर रहा है, लेकिन जीसी कभी भी ओएस पर वापस आने वाली स्मृति को मुक्त नहीं करता है। इसके अलावा पूरा ऐप पहले की तुलना में अधिक मेमोरी का उपयोग कर रहा है।

ऐप भी बहुत धीमा चलाता है और जब तक मैंने इसे रोक दिया तब तक 121 एमबी तक पहुंच गया।

PhoneGap Canvas app running under iOS 8

मैं जोड़ने चाहिए कि जब स्तर मैं उतारने पेज है, जो दिलचस्प आईओएस के तहत किसी भी मेमोरी खाली नहीं है फिर से लोड 8.

किसी को भी किसी भी विचार यह है कि क्या कारण हो सकता है है समस्या और समाधान क्या हो सकता है? क्या यह आईओएस 8 में एक बग है?

8.0 में (लेकिन 8.1 नहीं) कोई वर्कअराउंड/हैक का उपयोग करके मुक्त हो सकता है: का उपयोग करके पेज रीलोड को मजबूर करने से पहले window.location.reload(true); पर कॉल करना। 8.1 के बाद से यह हैक/कामकाज काम नहीं करता है।

+1

यह इस मुद्दे से संबंधित हो सकता है (या समकक्ष): https://issues.apache.org/jira/browse/CB-8002 आप, कृपया इसे बाहर की जाँच करें और हमें अगर इसकी जानकारी दे सकते हैं यह एक ही मुद्दा हो सकता है। यदि ऐसा है, तो मुझे लगता है कि एक पैच संस्करण उपलब्ध है (जिरा टिकट में नोट्स देखें)। – sandstrom

उत्तर

4

अंततः हल हो गया।

WGWebView में फ़ाइल लोडिंग बग के कारण UIWebView का उपयोग करने के लिए फ़ोनगैप डिफ़ॉल्ट। उपर्युक्त बग केवल UIWebView में होता है।

मैंने निम्न प्लगइन स्थापित किया जो WKWebView में फ़ाइल लोडिंग बग को ठीक करता है। यह मुझे WKWebView का उपयोग करने देता है जिसमें ऊपर मेमोरी बग नहीं है।

https://github.com/Telerik-Verified-Plugins/WKWebView

+1

मैं आपके द्वारा सुझाए गए इस प्लगइन का उपयोग कर रहा हूं, जो स्मृति उपयोग को कम रखता है, लेकिन लोडिंग स्प्रिशीशीट के एक निश्चित बिंदु के बाद, ऐप नरक में जाता है। यह क्रैश या उच्च मेमोरी उपयोग नहीं दिखाता है, लेकिन 2 एफपीएस की तरह चलता है। न केवल कैनवास तत्व, बल्कि सबकुछ। मैंने सुना है कि यह एक बिंदु है जहां छवियों में लोड होने पर यह होगा (12000 x 12000 बिट बिट्स के लायक) मुझे एक बार में सभी बिटमैप्स की आवश्यकता नहीं है, इसलिए मैं भी आपकी दूसरी चाल को पुनः लोड करने के साथ 8.2 में उम्मीद कर रहा हूं, यह फिर से काम करता है लेकिन छवियां प्रतीत होती हैं कहीं और चारों ओर चिपकने और इसे सब धीमा करने के लिए। कोई सुझाव? – bmanderscheid

+0

हाय निट्टन, मैं एक ही मुद्दे से जूझ रहा हूं। प्लगइन लिंक के लिए धन्यवाद! हालांकि, इसका उपयोग वास्तव में "com.apple.webkit" प्रक्रिया पर स्मृति वृद्धि समस्या की रिपोर्ट करता है और ऐप अंत में दुर्घटनाग्रस्त हो जाता है। (https://github.com/Telerik- सत्यापित-Plugins/WKWebView/issues/112) क्या आप एक समान व्यवहार देख रहे हैं? आपकी मदद के लिए अग्रिम धन्यवाद। सादर। – Marc