2016-09-20 16 views
0

我只是测试了crossfilter的某些方面。我创建了一个名为typeDim的维度,然后运行typeDim.dispose()。该命令正在工作,因为当我在typeDim之前创建31维时,dispose命令为另外一个空间创建空间。但是,当我运行console.log(typeDim.top(3))处置时,仍然打印出三个事实。我会期待一个错误。Crossfilter:仍然可以访问处理的维数

var typeDimension = facts.dimension(function(d){ return d.type; }); 
    typeDimension.dispose(); 
    console.log(typeDimension.top(3)); 

输出:

[Object,Object,Object] 

有谁知道为什么我仍然可以在其处置后访问typeDim?谢谢

+0

不知道为什么这得到了投票。完全合理的问题。 –

回答

1

当您处置Crossfilter维度时,应该处理对Crossfilter内维度的所有引用,这将允许浏览器的垃圾回收删除维度对象。 Crossfilter内部过滤器数组中维的列也将被删除。但是,如果保留对维度的引用,维度对象将不会被删除。

关闭我的头顶,几件事情,这意味着:

  • dimension.topdimension.bottom仍然会返回值。
  • dimension.filter对于此维度的Crossfilter不应再有任何影响。
  • 如果任何过滤器是在地方上的尺寸,他们将被从Crossfilter

除去这也可能是最好的,当你处理一个维度的,也尽量去除,以在维帮助任何引用您的自己的代码,以便系统可以垃圾收集所有的维度对象。如果你不这样做,你将最终得到本质上是内存泄漏的东西,尽管它不会再影响你的Crossfilter,直到你真的用完了内存。

相关问题