May 01

ActionScript3 メモリ解放

Flash, actionscript3 コメントはページの下に

actionscript3 object remove

先日のActionScript3 deleteで悩むに関することなんですが。

Objectのdeleteは出来ないと書いたんですが、やはり気になってちょこちょこ調べているとremoveChild( child:DisplayObject)を使うようです。

まぁ、使わないなら使わないで、newしたObjectがどこからも参照されなければ、Garbage CollectionというActionScript3内に存在する掃除屋さんが、きれいにしてくれるらしいのですが。
これがまた「クセモノ」らしく、結構メモリリークの原因になるそうです。
お姉さんが掃除してくれるなら、あえてremoveChild()しないんだけど。(って思いを込めた図)

AS3で陥りがちなメモリリーク@AS3S.ORG

この記事では、イベントリスナーとObjectの微妙な関係をついていて、一見参照をなくしたと思っていたけどよくよく見ると参照が残っていたのでGarbageCollectionでは削除されないというもの。

なるほど。
イベントにも気をつけて、なおかつremoveChildをやればメモリ管理も少しは楽になりますね。
addEventListenerで追加したイベントに対して、errorやcomplete系のイベント時にはaddEventListenerしたイベントに関してはすべてremoveEventListenerする関数でも作っておけばとりあえずはOKですかね。

参考リンク

 akihiro kamij: Flash Player 9 のガーベジコレクション

前後の記事

関連した記事

トラックバック&Pingback

この記事が気に入ったりした方は、自分のブログを書くときに「下のURLをコピーして、自分のブログ投稿時のトラックバック欄にペースト」してください。つながります。
URL:

コメント ( 0 )

コメント記入欄

Copyright(c) 小山太郎.com All rights reserved.