location.reload后内存泄漏

Memory leaks after location.reload

本文关键字:泄漏 内存 reload location      更新时间:2023-11-18

我有一些代码如下。

var domNode = somehowGet();
domNode.someEvent = function(){
    domNode.appendChild(createNodeUsing(window));
};
window.guid = createGuid(); // called at startup

在我调用location.reload之后,我打开DevTools探查器,看到一些分离的树节点和额外的Window实例,它们的数量与重新加载的数量完全相同。

也就是说,如果我调用location.reload 5次,就会有5个额外的Window对象实例,并且它们都有不同的Guid。

问题是,如果除了上面提到的那些,没有其他对domNode的引用,GC会释放内存吗?

换句话说,我需要知道为什么有几个窗口实例

浏览器是Chromium的一些最新版本。

domNode.someEvent=function(){}是一个循环引用模式。domNode获得了对someEvent的引用,someEvent是一个属性,在这个someEvent函数中,domNode仍然是可引用的(作为闭包)。

我不确定chrome是否可以回收内存,但我认为应该避免这种模式。

点击此处查看更多详细信息。http://javascript.info/tutorial/memory-leaks#ie-lt-8-dom-js-内存泄漏