グルチャ

enchant.js Safariでsound.clone()を実行するとメモリリーク

バグっぽいのを見つけたので、enchant.js本家にバグ報告した。
https://github.com/wise9/enchant.js/issues/210

一応、このブログでも報告しておく。
javascirptのメモリ管理を知りたかったので、タクスマネージャーを眺めていたら、とてつもなくメモリ食っていることに気づき、
調べたら、sound.clone()でメモリリークしているっぽい。
効果音鳴らすゲームなら、簡単に100MB、200MBと食っていくので注意。
ただし、Safariでしか発生しないので、ブラウザのバグなのか、enchant.jsのバグなのか微妙なところ。
以下、本家への報告コピペ。

[環境]
OS: Windows7 64bit
ブラウザ:Safari 5.1.7
enchant.js v0.7.0 (v0.6.3でも同様の現象が発生する)

[発生手順]
●手順1
1.サンプルの examples/expert/action/index.html をサファリで実行する
2.Windows タスクマネージャーを実行し、プロセスタブのWebKit2WebProcess.exeに注目
3.サンプルのhtmlに戻りゲームスタート。上キーを押し続けて、ジャンプし続ける
4.タスクマネージャーのWebKit2WebProcess.exeのメモリが4MBぐらいの単位で増え続ける。
5.サンプルのhtmlの上キーを離してジャンプを止めても、メモリが減らない。

●手順2
examples/expert/action/game.js の92行目の
game.assets[‘jump.wav’].clone().play();
の箇所を
game.assets[‘jump.wav’].play();
に変更して、手順1を実行すると、メモリリークの量が減る。(それでもメモリが僅かに増え続けるので他にもメモリリークしているのかも?)

[コメント]
以上のことから、sound.clone()を実行するとメモリリークが発生するものと思われます。
ただし、この現象はSafariでしか発生せず、firefoxやchromeでは問題ありませんでした。


Leave a reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>