1

アニメーターのワークフローのために、多くの外部swfファイルをロードする必要がある Air アプリケーションを構築しています。

起動プロセスで FileStream / Loader オブジェクトを介してそれらをすべてロードし、後で使用できるようにオブジェクトに保存します。

それらがロードされた瞬間に、gotoAndStop(1)コマンドを使用してループを停止させます (元のファイルにはスクリプトがまったくありません)。

ロード プロセスの後、システム メモリがゆっくりではあるが一貫して増加することがわかります。コマンドを使用してガベージ コレクションを手動で呼び出すとSystem.gc()、メモリが再びクリアされます。

アプリケーションを何時間も実行すると、ガベージ コレクターが実行されないように見えます。

問題が何であるかについてのアイデアはありますか?それとも、それを忘れて、時々System.gc()手動で実行する必要がありますか?

どうもありがとう!

4

1 に答える 1

2

ガベージ コレクターは必要な場合にのみ実行されるため、実行までに非常に長い時間がかかる可能性があります (特に、使用可能な RAM が大量にある場合)。

重要なことは、実行時にメモリがクリアされることです。これは、クリアできるため、リークがないことを示しています。

また、システムメモリをどのように測定していますか? タスク マネージャーを使用して実行している場合、これらの数値は実際には信頼できません。

Process Explorerをお勧めします。代わりに「Private Bytes」列を監視してください。

于 2013-09-08T10:10:08.640 に答える