Crossfilter:仍然可以访问已处理的维度

时间:2016-09-20 11:13:26

标签: crossfilter

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

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

输出:

[Object,Object,Object]

有没有人知道为什么我在处理后仍然可以访问typeDim?感谢

1 个答案:

答案 0 :(得分:1)

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

脱离我的头脑,这意味着一些事情:

  • dimension.topdimension.bottom仍会返回值。
  • dimension.filter不应再对此维度的Crossfilter产生任何影响。
  • 如果维度上有任何过滤器,则会从Crossfilter中删除它们

当您处理维度时,最好也尝试删除对您自己的代码中的维度帮助的任何引用,以便系统可以垃圾收集所有维度对象。如果你不这样做,你将最终得到本质上是内存泄漏的内容,但在实际内存不足之前它不应再影响你的Crossfilter。