2016-09-20 5 views
0

クロスフィルタの特定の側面をテストしています。私はtypeDimという次元を作成し、次にtypeDim.dispose()を実行しました。 typeDimの前に31次元を作成すると、disposeコマンドは余分なスペースを確保するため、コマンドが機能しています。しかし、console.log(typeDim.top(3))を実行すると、の処分後にの3つのファクトが出力されます。私は間違いを予想していただろう。クロスフィルタ:依然として処理可能な次元にアクセス可能

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

出力:私はまだそれを処分した後typeDimにアクセスすることができる理由

[Object,Object,Object] 

、誰もが知っていますか?ありがとう

+0

なぜこれがダウン投票されたのか分かりません。完璧に合理的な質問。 –

答えて

1

Crossfilterディメンションを破棄すると、Crossfilter内のディメンションへの参照がすべて破棄されるため、ブラウザのガベージコレクションでディメンションオブジェクトが削除されます。 Crossfilterの内部フィルタ配列の次元の列も削除されます。ただし、周囲のディメンションへの参照を保持すると、ディメンションオブジェクトは削除されません。私の頭の上オフ

、いくつかのことこれは意味:

  • dimension.topdimension.bottomはまだ値を返します。
  • dimension.filterは、このディメンションのCrossfilterに影響しないはずです。
  • 任意のフィルタが次元上の所定の位置にあった場合、彼らはまた、あなたの寸法のヘルプへの参照を削除しようとする、ディメンションを廃棄する場合、おそらく最善ですCrossfilter

から削除されますシステムがすべての次元オブジェクトをガベージコレクトできるようにします。これを行わなければ、本質的にメモリリークであることになりますが、実際にメモリが足りなくなるまで、Crossfilterには影響しません。

関連する問題