私は私がしたいアプリケーションを構築しています複数のユーザーの動きを再生します(最大20人)。 各ユーザーには、X、Yポジション(20〜400ポジションの範囲)のリストがあります。リプレイの範囲は1〜10分です。
リプレイは私が必要とするすべての8FPSで描かれています。各フレームで、ユーザーの動きを示すレイヤーを削除し、次の時点まですべてを再描画します。
このアプリケーションは、多くのメモリを使用し、私がリプレイを再実行すると、メモリ消費量は増加し続けます(最大8 GB)。私はGoogle Chrome(バージョン27)でプロファイラを使用しようとしましたが、それはメモリに複数のレイヤーが構築されているようです。 remove()
古い層。
次のコードは、アプリケーションの動作を簡単に示しています。
function draw()
{
stage.removeChildren();
var userLayer = new Kinetic.Layer();
/*
iterate all data and create lines to signify the movement of a user,
and add it to userLayer
*/
stage.add(userLayer);
}
setInterval(draw, 125); // 8 FPS
私の質問は、 stage.removeChildren()
また、 Kinetic.Layer().remove()
、彼らはメモリからレイヤーを削除しないのですか?あるいは、私はこれを全く違う方法で扱う必要がありますか?
回答:
回答№1は1はい。 "Remove"は親コンテナから削除します。しかし、オブジェクトはまだ存在します。代わりに "破壊"を使用しなければなりません。