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

时间:2015-03-06 09:41:55

标签: javascript

经常想知道这一点。页面刷新后没有#39;浏览器会丢弃所有内容吗?

由于

2 个答案:

答案 0 :(得分:2)

  

页面刷新后,浏览器不会丢弃所有内容吗?

应该这样做,是的。因此,如果您的页面有内存泄漏,随着时间的推移它将消耗越来越多的内存,直到/除非用户刷新它。 (出于这个原因,我必须每隔几天刷新一次Gmail标签页。)

答案 1 :(得分:2)

取决于。

某些浏览器,如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('*');

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

打开新标签页并转到http://google.com并运行上述代码 留意内存使用情况 它应该是大约25000kB。

运行此代码。
您会注意到内存将达到大约40000kB 刷新并重复。
只是看看内存使用情况如何上升......

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