複数のユーザー (最大 20) の動きを再生したいアプリケーションを構築しています。各ユーザーは、X、Y 位置 (20 から 400 の範囲) のリストを持っています。リプレイの範囲は 1 ~ 10 分です。
リプレイは 8 FPS で描画されますが、これで十分です。各フレームで、ユーザーの動きを示すレイヤーを削除し、次の時点まですべてを再描画します。
このアプリケーションは大量のメモリを使用します。リプレイを再実行すると、メモリ消費量が増加し続けます (最大 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()
、メモリからレイヤーを削除しないのですか? それとも、これをまったく別の方法で処理する必要がありますか?