Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 Openlayers 3-如何垃圾收集画布ReplayGroup对象?_Javascript_Garbage Collection_Openlayers 3 - Fatal编程技术网

Javascript Openlayers 3-如何垃圾收集画布ReplayGroup对象?

Javascript Openlayers 3-如何垃圾收集画布ReplayGroup对象?,javascript,garbage-collection,openlayers-3,Javascript,Garbage Collection,Openlayers 3,我发现ol.render.canvas.ReplayGroup对象不能被释放到垃圾收集中 该层是一个ol.layer.Image,它是从ol.source.ImageVector创建的,反过来又是从ol.source.Vector源创建的 我希望导致垃圾收集的事件序列是, 使用setStyle(null)将图像的样式设置为null; 然后使用setSource(null)将图像的源设置为null; 然后使用setMap(null)从映射中删除ol.layer.Image对象 这确实会导致图层从地

我发现ol.render.canvas.ReplayGroup对象不能被释放到垃圾收集中

该层是一个ol.layer.Image,它是从ol.source.ImageVector创建的,反过来又是从ol.source.Vector源创建的

我希望导致垃圾收集的事件序列是, 使用setStyle(null)将图像的样式设置为null; 然后使用setSource(null)将图像的源设置为null; 然后使用setMap(null)从映射中删除ol.layer.Image对象

这确实会导致图层从地图中删除(我想,它会消失),但当我使用Chrome的堆分配配置文件对网页进行配置时,canvas.ReplayGroup对象仍然存在,不再使用

这是其他人碰到过的吗?我尝试使用map.addLayer()而不是layer.setMap(),结果相同

==编辑==

我忘记写了,ol.layer.Image已添加到ol.layer.Group。更具体地说,上面的最后一部分是map.addLayer(group)和group.getLayers().forEach(function(l){l.setMap(map);}),似乎没有什么区别。

在作为ol.layer.Image源的ol.source.ImageVector中,我找到了对replay组类的引用,称为replayGroup。将层源设置为null后,将该“private”属性设置为null将导致垃圾收集。。耶

var imageVector = layer.getSource();
layer.setSource(null);
imageVector.setStyle(null);
imageVector.replayGroup_ = null;
imageVector = null;
这对我现在有用