你能捕到JavaScript中的内存不足错误吗?

时间:2016-06-08 16:57:54

标签: javascript caching memory mobile

我正在构建一个依赖于缓存的移动网络应用。 如果我的缓存使用了大量内存,我在移动Safari中看到了这条消息......

  

"此网页出现问题,因此重新加载"。

如果没有干预,页面将重新加载并重复执行相同的操作几次,直到它放弃。

我可以捕获的事件,我可以监控的堆信息,还是我可以更改的设置,以构建比强制页面重新加载更具弹性的缓存系统?

Chrome已window.performace.memory,但我似乎无法找到与在移动版Safari中解决我的问题相关的任何内容。 Try / catch语句和onBeforeUnload事件不会阻止页面加载或提供清除/减少缓存的机会。

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

Error handling "Out of Memory Exception" in browser?

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;

}