重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ActionScript3.0です。

色々とaddChildやaddEventListenerをしていくとメモリがどんどん食われていって動きが鈍くなっていくのですが、それの対処法ってなにかあるのでしょうか?

自分が行っているのは使わなくなったものはremoveChildしたりremoveEventListenerをしたり変数にnullを入れたりとしているのですが、trace(System.totalMemory);で見ているのですが数値がまったく減っていきません。
調べてみるとガベージコレクションが働いたときにしかメモリが解放されないような事が書いてある記事をみたのですが。
もうそれしか方法ないのでしょうか?

ちなみにメモリは111067136ぐらいまでいくと、動きがカクカクしてきます。

すみませんがどなたかお詳しい方よろしくお願いします!

A 回答 (1件)

イベントリスナの関数はremoveEventListenerしても実は生きていて


その関数が参照してるものもそれに応じて実は生き続けてる
だからremoveEventListenerしたときに
リスナー関数がガーベージコレクションに入るように
addEventListenerするときに第5引数useWeakReferenceをtrueにしておく

addEventListener(イベントタイプ,関数,false,0,true)

これでどうでしょうかね
    • good
    • 0
この回答へのお礼

なるほどそういうやり方もあるのですか!

もうちょっと色々と勉強してみます。
ありがとうございました!

お礼日時:2011/06/15 02:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!