7

ここでライトテストの簡単なデモを作成しました:http://jsfiddle.net/CGr9d/

Chrome 開発ツールを使用してメモリ使用量を記録すると、次のようになります: http://cl.ly/LSDl、基本的には特定のポイントまで上昇し、その後再び下降して、前の最高点に再び達するまで最初からやり直します。

これは正常ですか?コードを最適化してメモリ負荷を軽減する方法はありますか?

これは私のmousemove関数です:

$('body').mousemove(function(e) {
  //2000 is half the image width/height, of course used for centering
  $('.light-circle').css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' });
});

ありがとう。

4

1 に答える 1

4

セレクターに一致する要素.light-circleが変更されない場合は、次のように少し最適化できます。

var circles = $('.light-circle');
$('body').mousemove(function(e) {
  //2000 is half the image width/height, of course used for centering
  circles.css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' });
});

そうすれば、マウスを動かすたびにDOMを再クエリしたり、新しいjQueryオブジェクトを割り当てたりする必要がなくなります。

しかし、ガベージコレクション環境では、メモリが増加し、次に減少し、次に再び増加するのは完全に正常です。

于 2012-12-10T09:41:22.100 に答える