gpt4 book ai didi

javascript - 添加/删除 IFrame 时出现 IFrame 内存泄漏

转载 作者:行者123 更新时间:2023-12-01 15:28:25 24 4
gpt4 key购买 nike

我有以下 HTML 可以重现我看到的问题。当我随着时间的推移添加/删除 IFrame 时,浏览器永远不会释放 IFrame 内存。结果,内存会随着时间的推移而增长和增长,从而导致性能下降。我已经看到这种影响 Safari/IE11/Edge 相当多,而 Firefox/Chrome 处理得更好。有人对如何规避 IFrame 内存泄漏有任何提示吗?

<html>
<body>
<button onclick="add()">ADD</button>
<button onclick="remove()">REMOVE</button>
<script>
function add() {
var ifrm = document.createElement('iframe');
ifrm.setAttribute('id', 'ifrm');
ifrm.setAttribute('src', 'http://somewebsite.com');
document.body.appendChild(ifrm);
}
function remove() {
document.body.removeChild(document.getElementById('ifrm'));
}
</script>
</body>
</html>

最佳答案

尝试以下操作:

  • 将 iframe url 设置为空白页,如“”;
  • 打破可能引用 iframe 页面对象的页面引用;
  • 将 iframe 页面创建的所有对象设置为 null 或未定义。

  • 操作 2 和 3 只有在 iframe 的页面是自己开发的情况下才可用。

    如果你做了 1 和 2,那么 chrome 会立即释放 iframe 页面分配的 js 堆。

    如果您执行了 1、2 和 3,那么 firefox 也会立即释放 js 堆。

    但是,即使你做了上述所有操作,Safari 也不会在一段时间内释放 js 堆。

    关于javascript - 添加/删除 IFrame 时出现 IFrame 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48331588/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com