JavaScript、Safari5.1のbackgroundPositionでメモリリーク
Posted by 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まで下がった。
何だこれ?