页面刷新后javascript内存泄漏重要吗?为什么?

ton*_*ony 5 javascript

我经常想知道这一点。页面刷新后,浏览器不会丢弃所有内容吗?

谢谢

Ism*_*uel 3

这取决于。

某些浏览器(例如 Opera 12.17 及更早版本)在单个进程中运行。
它们的内存访问受到限制,并且对同一地址空间执行大量操作。

其他浏览器(例如 Google Chrome)每页都有一个进程,刷新后该进程可能会被删除。

但是,由于它泄漏了,它可能超出了浏览器当前控制的边界(例如:可能被放入交换中)。

在那里,不能保证它会被删除。

另请注意,浏览器的垃圾收集器可能存在错误,并会留下一些对象(如旧的 IE 版本)。
这不会随着刷新而消失。
考虑这个非常基本的代码:

var all = document.getElementsByTagName('*');

for(var i=all.length-1; i; i--)
{
    all[i].parentNode.removeChild(all[i]);
}

document.write('<p>New content</p>');

all = document.getElementsByTagName('*');
Run Code Online (Sandbox Code Playgroud)

在 Google Chrome 上,打开“任务管理器”( Menu > More Tools > Task Manager)。

打开一个新选项卡并转到http://google.com并运行上面的代码。
密切关注内存使用情况。
应该在25000kB左右。

运行这段代码。
您会注意到内存将增加到大约 40000kB。
刷新并重复。
看看内存使用量如何上升......

我很想说“是”,但浏览器是非常复杂的程序。