1

タイムラインに基づいたプログラミングのすべての問題をすでに知っていますが、その状況でガベージコレクターがどうなるか知りたいです。

タイムラインでコードについて話す-コードが同じフレームにない場合、ムービークリップにアクセスできないため、これによりメモリリークが発生する可能性がありますか?

タイムラインのムービークリップは、「再生ヘッド」が現在フレーム上にあるときに追加され、消えると削除されるようです。

4

2 に答える 2

2

ガベージコレクターは、次の場合、ステージから削除されたムービークリップをクリーンアップ/破棄できません。

  • そのクリップはまだ再生中であり、何かを実行します(他のものを作成/削除します...)

  • そのクリップは、「到達可能」である他のインスタンスによって引き続き参照されます

  • アイテムが多すぎる複雑すぎる階層を削除しようとしています[これには番号がありませんが、2 ^ 32アイテム程度だと思いますか?]

メモリリークがあるかどうかを確認するために私が通常使用する1つの方法は、FlashDevelopでSWF Profilerを実行し、特定の状況でGCを強制的に実行して、何が削除されるかを確認することです。

詳細については、次の記事を確認してください。

http://active.tutsplus.com/tutorials/workflow/quick-tip-understanding-garbage-collection-in-as3/

于 2012-08-02T17:02:28.037 に答える
0

コードはまだそのMovieClipの一部です。だからそれはまだそこにあります。また、MovieClipはまだ親にアタッチされていると推定されるため、そのまま残ります。

(親が子を参照する可能性があり、子が.parent変数を使用して親を参照する可能性があるため、画面上ではなく親にアタッチされていると言います。したがって、両方がそれらを指すものを持っているため、メモリに残ります)。

于 2012-08-02T14:59:50.050 に答える