JavaScript、Safari5.1のbackgroundPositionでメモリリーク

Posted by dab | 2012年5月18日 金曜日 5:15:59 < JavaScript, コンピュータ >

JavaScriptアニメーション(スプライト使用)をやろうとして、以下のテストコード。


<style>
#div1{
background:#fff url(sprite.png) no-repeat 0 0;
width:300px;height:300px;
}
</style>
<script type="text/javascript">
var x=0,y=0,div1;
onload=function(){
  div1=document.getElementById('div1');
  setInterval(function(){
    div1.style.backgroundPosition='-'+x+'px -'+y+'px';
    x++,y++;if(x>1000)x=0;if(y>1000)y=0;
  }, 1);
}
</script>
<div id="div1"></div>

ガンガンにメモリリークしまくりなんですが、詰んだ?お手上げ?
何だこれ?


いろんな方が公開されているCSSスプライトをいくつか試してみましたが、試したものは全てメモリリーク発生。
CANVASに描画したものはさすがにリークはありませんでした。

お手上げ。
ブラウザのバグってことにしておこう。


その後の調査。
6時間から12時間以上放置していたけど、一定(500MB程度)以上増えないらしい。
時々ガーベジコレクションが働いてメモリが解放されているからだと思う。
一時期100MBまで下がった。
何だこれ?

TrackBack URI : http://home.wi-wi.jp/blog/wp-trackback.php?p=962

Leave a comment

:mrgreen: :neutral: :twisted: :shock: :smile: :???: :cool: :evil: :grin: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad: