« 専門バカ | main | はてなカウンターの改悪につきまして »
2005年10月28日
BitmapDataクラスのメモリリーク問題
via gBlog: Major Flash Player 8 Memory Leak
特定の条件下でBitmapDataオブジェクトにメモリーリークが起きる問題。
こんな風に、関数内のローカル変数でBitmapDataを生成すると、関数終了時にメモリが開放されず、onEnterFrame内に書こうものなら死亡できるらしい。
個人的にはかなり致命的。
function onEnterFrame() { var foo = new flash.display.BitmapData(500,500); }
使い終わった後にこまめにdisposeでメモリを開放すればよいのだけど、returnでBitmapDataを返す場合にはdisposeが使えないわけで(使うと返す値が消えるので)、事実上ハマるらしい。
自作のBitmapDataクラスほぼ作り直ししないとヤバめ。誰かはやく頭のいい解決法みつけてください。
投稿者 Taka : 2005年10月28日 10:51
book
bookmark
trackbacks
this entry's trackback URL:
http://www.fladdict.net/cgi-bin/mt3/mt-tb.cgi/359
comment
あてずっぽうで失礼しますが。。。
CやC++のメモリ管理問題に似てますね。
・呼び出し側で空で割り当ててから関数に渡す
・スマートポインタ的な仕組みを導入する
などの方法があるでしょうか。はずしてたらすいません。
by 石橋秀仁 : 2005年10月30日 12:53
こんばんは。お久しぶりです。
いろいろコード書いて調べてみました。
BitmapData型の変数は、インスタンスを管理できるスコープで保持し、生成と破棄を管理しなければならないと思いました。BitmapDataのインスタンスを破棄するためには、dispose()の呼び出しが必須みたいですね^^;
by arkw : 2005年11月24日 19:34
right TV will kill pair without any questions: http://www.npr.org/ , red slot is always full chair
by Alexander Ford : 2006年03月28日 12:12