当前位置:  开发笔记 > 编程语言 > 正文

Internet Explorer 11 SPA iframe内存泄漏

如何解决《InternetExplorer11SPAiframe内存泄漏》经验,为你挑选了0个好方法。

在我的公司,我们正在开发一个有多个iframe的SPA.有时一些帧不会加载到IE 11上,因为IE内存不足(内存中的iframe内容可能非常繁重,但Chrome和FF上的内容都没问题).

事实上,我们监控的事实是,每次重新加载页面时,使用的内存(从IE内存分析器或Windows任务管理器获取的数据)都会持续增加,直到达到1.6Gb阈值.

我发现这个非常有趣的帖子,我认为我所有的烦恼都会消失.由于我们没有使用jQuery,我将这个提供的片段改编为vanilla JS.我的想法是在页面重新加载之前清除帧以检查是否将回收使用的内存.

这是我写的代码:

window.addEventListener('beforeunload', function () {
    [].slice.call(document.querySelectorAll('iframe')).forEach(function (frame) {
        // remove all frame children
        while (frame.contentWindow.document.body.firstChild) {
            frame.contentWindow.document.body.removeChild(frame.contentWindow.document.body.firstChild);
        }      
        frame.src = 'about:blank';
        frame.parentNode.removeChild(frame);
    });
    // force garbarge collection for IE only
    window.CollectGarbage && window.CollectGarbage();
});

然后我打开IE的内存分析器并重新加载应用程序.然而,很少的内存被回收,我最终得到了这样的内存图

我错过了什么.有一些任何信息或建议吗?

谢谢.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有