3

私は次の方法でイベントリスナー/ハンドラーを操作しています。

    var _builder_canvas = document.getElementById("Builder");

    mouseMove = function() {
    }

    initBuilder = function( ) {
         // Add mouse listener events
         _builder_canvas.addEventListener( 'mousemove', mouseMove, true);
    }

'initBuilder'がメインドキュメントのonloadハンドラーで呼び出されます。

上記のように空の関数を使用しても、Chrome(23.0.1271.64)またはFF(16.0.2)でこのコードを実行すると、マウスが移動するたびに解放されないメモリが割り当てられます。

メモリリークを回避するためにイベントリスナーを常に削除する必要があることは知っていますが、それがmousemoveハンドラーである場合、どのようにそれを行うのでしょうか。ハンドラーは、ページが開いている間ずっとアクティブである必要があります。

また、mouseupまたはmousedownに対して同様の方法でリスナー/ハンドラーを追加しても、余分なメモリ割り当てが発生しないことにも気づきました。

ここで基本的な何かが欠けていますか?任意の洞察をいただければ幸いです。

4

1 に答える 1

0

devtools>タイムラインを使用してメモリ使用量を記録すると、イベントが発生した後、メモリの割り当てが適切に解除されていることがわかります。

于 2012-11-09T16:19:23.853 に答える