0

実行時に数百MBのメモリを使用するFlashアプリケーションがあります。どういうわけかこのメモリを手動でパージすることは可能ですか?

たとえば、いくつかを注入します

System.gc()

全体にlibflashplayer.so

4

2 に答える 2

0

デバッグモードの外ではありません。ガベージコレクションで深刻な問題が発生している場合は、こちらのスレッドとスレッドにリンクされている記事をご覧ください。

AS3ガベージコレクターがこれを取得しないのはなぜですか?

于 2013-03-26T13:10:36.853 に答える
0

GCはすでに定期的に実行されているため、GCがメモリを解放しない場合は、Flashアプリケーションで問題が発生しています。

オブジェクトが不要になってもGCされない場合は、コードを手動でチェックして、オブジェクトがすべてのイベントリスナーを解放するようにする必要があります。TimerEvent.TIMERおそらく、リスナー、または他の場所にある他のリスナーを削除するのを忘れたのでしょう。そのインスタンスを使用しない場合は、すべてのオブジェクトを適切に逆参照するようにしてください。これには、不要になったオブジェクトを、まだ必要な親の表示リストから削除することが含まれます(ただし、参照が解除されるかのように、そのオブジェクトの表示リストを空にすることは含まれません。その表示リストは、有効なものとしてカウントされなくなります。ネストされたオブジェクトへのリンク。これにより、オブジェクトも収集される可能性があります)、を持たないすべてのリスナーを削除します。useWeakReferenceこのオブジェクトとそのすべてのコンテンツから追加するときにtrueに設定されたフラグ(弱く参照されていないリスナーは有効なリンクとしてカウントされます)。基本的に、どのリスナーをどのオブジェクトにアタッチするか、およびリスナーをいつ追加または削除するかを常に完全に制御する必要があります。

于 2013-03-28T05:23:57.857 に答える