« 専門バカ | 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

dotfla.gif

bookmark

はてなブックマークに追加

del.icio.usに追加

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

コメントしてください




保存しますか?