swf をアンロードした後にすべてのデータを削除する方法があることを知りたいです。
Loader.unloadAndStop(); の呼び出し コンテンツとロードされたバイトを削除しますが、ロードされたクラスはアプリケーション ドメインに残ります。
分離された新しい ApplicationDomain にロードすると、gc はアンロード後にそれらを収集し、すべての参照を削除しますか?
swf をアンロードした後にすべてのデータを削除する方法があることを知りたいです。
Loader.unloadAndStop(); の呼び出し コンテンツとロードされたバイトを削除しますが、ロードされたクラスはアプリケーション ドメインに残ります。
分離された新しい ApplicationDomain にロードすると、gc はアンロード後にそれらを収集し、すべての参照を削除しますか?
手始めに、ドメインにロードしたクラスは、参照を保持しない限り、アンロード時にメモリに残りません。したがって、次のようなことをした場合:
private static var foo:Class =
loadedSWF.loaderInfo.applicationDomain.getDefinition("Foo");
その後、明らかに、それはメモリに残ります。プレーヤーのバージョンによってはregisterClassAlias()
、ロードされたSWFから呼び出された場合にエイリアスが親ドメインに登録されるように動作が変更されるため、後で注意する必要があります。別のクラスに同じエイリアスを登録しない限り、クラスをアンロードします。後のバージョンでは、正しいドメインにクラスを適切に登録しますが、一部の人のコードを壊しました...ため息をつき、今日の動作は予測できないものであり、どのドメインが登録しようとしているのかを判断しようとしますそのクラスに基づくエイリアスはそのドメインで使用されますが、もちろん実行時に異なる場合があります...