【问题标题】:Error handling "Out of Memory Exception" in browser?在浏览器中处理“内存不足异常”时出错?
【发布时间】:2014-11-12 06:14:55
【问题描述】:

我正在调试一个使用大量内存的 javascript/html5 网络应用程序。有时我会在控制台窗口中收到一条错误消息,说

"uncaught exception: out of memory".  

有没有办法让我在应用程序中优雅地处理这个错误?

最终我需要重写其中的部分内容以防止这种情况发生。

【问题讨论】:

  • 仅供参考,有一个有用的AngularJS Batarang 扩展可以帮助调试性能问题。
  • 你能告诉我你的代码吗?

标签: javascript html angularjs google-chrome firefox


【解决方案1】:

在 Firefox 中遇到了同样的问题,后来我才知道我正在尝试重新加载 HTML 页面,甚至在将一些数据设置到 if 循环内的本地存储之前。所以你需要照顾好那个,还要检查某个地方的 ID 是否重复。

但同样的事情在 Chrome 中运行良好。也许 Chrome 更智能。

【讨论】:

    【解决方案2】:

    我最近在处理具有大量 JS 并发送 Json 的项目时也收到了相同的错误消息,但我发现的解决方案是将 input type="submit" 属性更新为 input type="button"。我知道使用 input type="button"..> 有一些限制,而且解决方案看起来很奇怪,但是如果您的应用程序有带有 JS、Json 数据的 ajax,您可以尝试一下。谢谢。

    【讨论】:

    • ajax 调用的情况下,我只是将 input type="submit" 更改为 input type="button" ,并为我工作
    【解决方案3】:

    您应该计算本地存储的大小, 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;
    }
    

    【讨论】:

    • 稍后我会试一试,如果有帮助,请标记为正确。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2011-09-16
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多