0

複数のユーザー (最大 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()、メモリからレイヤーを削除しないのですか? それとも、これをまったく別の方法で処理する必要がありますか?

4

1 に答える 1