Openlayers 3-如何垃圾收集Canvas ReplayGroup对象
Openlayers 3 - How to garbage collect Canvas ReplayGroup objects?
我遇到了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的堆分配配置文件(画布)对网页进行配置时。ReplayGroup对象仍然存在,永远不会再使用。
这是别人碰到的东西吗?我尝试使用map.addLayer()而不是layer.setMap(),结果相同。
===编辑===
我忘了写,ol.layer.Image已经添加到ol.layer.Group中。更具体地说,上面的最后一部分是map.addLayer(Group)和Group.getLayers().forEach(function(l){l.setMap(map);}),看起来没有什么区别。
https://github.com/openlayers/ol3/blob/master/src/ol/source/imagevectorsource.js
在ol.layer.Image的源ol.source.ImageVector中,我发现了一个名为replayGroup_的重播组类的引用。在将层源设置为null之后,将"private"属性设置为null将导致垃圾回收。。耶!
var imageVector = layer.getSource();
layer.setSource(null);
imageVector.setStyle(null);
imageVector.replayGroup_ = null;
imageVector = null;
这对我现在有效
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- IE9的HTML5 Canvas getImageData()函数存在问题
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 加速我的复杂函数绘图仪(canvas+javascript)
- Canvas赢得't更新
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- HTML5 Canvas访问控制允许原始错误
- Jasny bootstrap Off Canvas菜单:如何在导航栏下强制菜单滑动
- 在fabric.js中以PNG格式下载Canvas,给出网络错误
- 如何使用Canvas制作3D动画
- 带有内置图像对象的Canvas组件构造函数;t显示's图像
- Javascript Canvas使用getImageData(x,y,1,1).data获取颜色
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- Canvas.toDataUrl(“image/png”)工作不正常
- Javascript和Canvas绘制中间有孔的圆
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- canvas没有从uri中绘制完整的图像
- jQuery QRcode不适用于canvas
- Openlayers 3-如何垃圾收集Canvas ReplayGroup对象