
先日のActionScript3 deleteで悩むに関することなんですが。
Objectのdeleteは出来ないと書いたんですが、やはり気になってちょこちょこ調べているとremoveChild( child:DisplayObject)を使うようです。
まぁ、使わないなら使わないで、newしたObjectがどこからも参照されなければ、Garbage CollectionというActionScript3内に存在する掃除屋さんが、きれいにしてくれるらしいのですが。
これがまた「クセモノ」らしく、結構メモリリークの原因になるそうです。
お姉さんが掃除してくれるなら、あえてremoveChild()しないんだけど。(って思いを込めた図)
この記事では、イベントリスナーとObjectの微妙な関係をついていて、一見参照をなくしたと思っていたけどよくよく見ると参照が残っていたのでGarbageCollectionでは削除されないというもの。
なるほど。
イベントにも気をつけて、なおかつremoveChildをやればメモリ管理も少しは楽になりますね。
addEventListenerで追加したイベントに対して、errorやcomplete系のイベント時にはaddEventListenerしたイベントに関してはすべてremoveEventListenerする関数でも作っておけばとりあえずはOKですかね。
akihiro kamij: Flash Player 9 のガーベジコレクション
この記事が気に入ったりした方は、自分のブログを書くときに「下のURLをコピーして、自分のブログ投稿時のトラックバック欄にペースト」してください。つながります。
URL: