ActionScript3で、Loaderクラスを使って、次々とSWFファイルを読み込んで再生していくようなソフトを作っています。


しかし、Loaderのload()を呼び出すたびに、メモリが増加していって、解放されません。毎回、Loaderインスタンスの参照カウントを0にして、解放しているつもりなのですが…。unload()を呼び出しても結果は変わりませんでした。

Loaderで使っているメモリを解放する方法を教えてください。

環境: Windows、IE。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/02/25 15:30:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:killingofthedead No.1

回答回数18ベストアンサー獲得回数4

ポイント60pt

不要なオブジェクトがGCされていないからメモリが増加するのだとすると、

強制的にGCさせればいいと思われます。

僕自身は試していないのですが、

次のURLに無理やりGCさせる方法がありました。


http://blog.livedoor.jp/oidemon/archives/51116907.html

id:tai2

残念ながら、この方法は、効果がないようでした。

2008/02/22 14:18:48
  • id:killingofthedead
    Loaderのインスタンスの参照カウントが0だとしても、
    Loader#load()でロードされたオブジェクトの参照カウントが0ではない場合、
    GCで処理されることはないですよね。
    Loader#unload()でLoaderのインスタンスは子に対する参照は失う訳ですが、
    もし他から子が参照されていた場合は参照カウントは0ではないですが、
    その辺はどうでしょうか?


    既にチェック済の場合はごめんなさい。
  • id:tai2
    どうも。

    問題がわかりやすいようにコードを載せました。
    http://d.hatena.ne.jp/tai2/20080222

    質問の状況とは若干ちがいますが、わたしの認識では、このコードで、きちんと開放されそうな気がするのですが…。
  • id:tai2
    どうもFlashのバグのようでした。

    https://bugs.adobe.com/jira/browse/SDK-12025

    直るまで待つしかないようですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません