2014-09-18 12 views
16

मैं एक जावास्क्रिप्ट/एचटीएमएल 5 वेब ऐप डिबग कर रहा हूं जो बहुत सारी मेमोरी का उपयोग करता है। कभी कभी मैं कंसोल विंडो कहब्राउज़र में "मेमोरी अपवाद से बाहर" को संभालने में त्रुटि?

"uncaught exception: out of memory". 

में एक त्रुटि संदेश मिलता वहाँ एक रास्ता मुझे शान से कुछ ऐप्लिकेशन के अंदर इस त्रुटि को संभालने के लिए के लिए है?

आखिरकार मुझे इसे पहले स्थान पर होने से रोकने के लिए इसके कुछ हिस्सों को दोबारा लिखना होगा।

+0

एफवाईआई, एक उपयोगी [AngularJS बटरंग] (https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk?hl=hi) एक्सटेंशन है जो प्रदर्शन समस्याओं को डीबग करने में मदद कर सकता है। – alecxe

+0

क्या आप मुझे अपना कोड दिखा सकते हैं? –

उत्तर

4

आप अपने localStorage के आकार calclulate चाहिए, window.localStorage पूर्ण

के रूप में एक समाधान कुछ

var localStorageSpace = function(){ 
    var allStrings = ''; 
    for(var key in window.localStorage){ 
     if(window.localStorage.hasOwnProperty(key)){ 
      allStrings += window.localStorage[key]; 
     } 
    } 
    return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)'; 
}; 

var storageIsFull = function() { 
    var size = localStorageSpace(); // old size 

    // try to add data 
    var er; 
    try { 
     window.localStorage.setItem("test-size", "1"); 
    } catch(er) {} 

    // check if data added 
    var isFull = (size === localStorageSpace()); 
    window.localStorage.removeItem("test-size"); 

    return isFull; 
} 
+0

मैं इसे बाद में एक शॉट दूंगा और यह उपयोगी होने पर सही चिह्नित करेगा। धन्यवाद! – user547794

0

सामना फ़ायरफ़ॉक्स में एक ही समस्या फिर बाद में मुझे पता है के लिए आया था जोड़ने की कोशिश करने के लिए है मैं लूप के अंदर स्थानीय स्टोरेज में कुछ डेटा सेट करने से पहले भी एक HTML पृष्ठ को फिर से लोड करने का प्रयास कर रहा था। तो आपको उस की देखभाल करने की आवश्यकता है और कहीं भी आईडी दोहराना है या नहीं।

लेकिन क्रोम में एक ही चीज़ बहुत अच्छी काम कर रही थी। शायद क्रोम अधिक बुद्धिमान है।

4

मुझे हाल ही में एक ही त्रुटि संदेश मिला जब एक परियोजना पर काम कर रहा था जिसमें बहुत सारे जेएस और जेसन भेज रहे थे, लेकिन मुझे जो समाधान मिला वह इनपुट प्रकार = "बटन" इनपुट इनपुट = "बटन" में अपडेट करना था। मुझे पता है कि इनपुट प्रकार = "बटन" का उपयोग करने की सीमाएं हैं ..> और समाधान अजीब लग रहा है, लेकिन यदि आपके एप्लिकेशन में जेएस, जेसन डेटा के साथ AJAX है, तो आप इसे आज़मा सकते हैं। धन्यवाद।

+0

@safin यह मेरे लिए काम किया। धन्यवाद –

+0

** अजाक्स कॉल के मामले में ** मैंने अभी इनपुट प्रकार = "बटन" इनपुट प्रकार = "बटन" में बदल दिया है, और मेरे लिए काम किया है – partho

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