javascript - 你能在 JavaScript 中捕获内存不足错误吗

标签 javascript caching memory mobile

我正在构建一个依赖缓存的移动网络应用程序。 如果我的缓存使用了太多内存,我会在移动版 Safari 中看到这条消息...

"A problem occurred with this webpage so it was reloaded".

如果没有干预,页面将重新加载并重复做同样的事情几次,直到它放弃。

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

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;

关于javascript - 你能在 JavaScript 中捕获内存不足错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708604/

相关文章:

javascript - 无法使正则表达式删除第一个空格字符

javascript - 如何在 chrome 扩展中加载 Google Analytics 和 Facebook SDK?

caching - 使用Redis作为缓存是否可以提高HBase的读取性能?

c - 缓存大小和计算缓存集

c++ - rapidjson c++ 在对象中释放数组

javascript - 有人可以告诉我这个 javascript 代码在做什么吗

javascript - 正则表达式 - 抓取所有 <li> 标签

Java:缓存计算结果?

python - sys.getsizeof 的深层版本

memory - boost 锁无锁spsc_queue缓存访问