Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript location.reload后内存泄漏_Javascript_Html_Dom_Memory Leaks - Fatal编程技术网

Javascript location.reload后内存泄漏

Javascript location.reload后内存泄漏,javascript,html,dom,memory-leaks,Javascript,Html,Dom,Memory Leaks,我有一些如下的代码 var domNode = somehowGet(); domNode.someEvent = function(){ domNode.appendChild(createNodeUsing(window)); }; window.guid = createGuid(); // called at startup 调用location.reload后,我打开DevTools profiler,看到一些分离的树节点和其他窗口实例,它们的数量与重新加载的数量完全相同

我有一些如下的代码

var domNode = somehowGet();

domNode.someEvent = function(){
    domNode.appendChild(createNodeUsing(window));
};

window.guid = createGuid(); // called at startup
调用location.reload后,我打开DevTools profiler,看到一些分离的树节点和其他窗口实例,它们的数量与重新加载的数量完全相同

也就是说,如果我调用location.reload 5次,将有5个窗口对象的额外实例,并且它们都有不同的GUID

问题是-如果除了上面我展示的那些引用之外,没有其他对domNode的引用,GC会释放内存吗

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


浏览器是一些最新版本。

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

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


请参阅此处的更多详细信息

这样的代码超过10MB,我无法在可预测的时间内以适当的方式修复它。我需要知道这样的代码是否会导致内存泄漏。