你能捕捉到JavaScript中的内存不足错误吗?
问题描述:
我正在构建一个将依赖于缓存的移动Web应用程序。 如果我的缓存使用的内存太多,我在移动Safari中看到此消息...你能捕捉到JavaScript中的内存不足错误吗?
“此网页发生问题,所以重新加载”。
没有干预,页面将重新加载并重复执行相同的操作,直到它放弃为止。
是否有事件可以捕获,堆信息我可以监视或设置,我可以更改以构建比强制页面重装更具弹性的缓存系统?
Chrome有window.performace.memory
但我似乎无法找到任何与解决移动Safari中的问题相关的任何内容。 Try/catch语句和onBeforeUnload事件不会阻止页面加载或提供清除/减少缓存的机会。
答
这有帮助吗?
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;
}
我不使用本地存储,但您提出的系统依赖于知道这个功能的内存限制,我不知道有多少可用内存是问题的核心。 –
另一个有用的链接。 http://stackoverflow.com/questions/23506064/how-do-you-detect-memory-limits-in-javascript –