Освободить домен приложения от основного SWF - PullRequest
1 голос
/ 22 октября 2011

Мне хотелось бы знать, что есть способ удалить все данные после выгрузки SWF.

Вызов Loader.unloadAndStop ();удалить содержимое и загруженные байты, но загруженные классы остаются в домене приложения.

Если я загружу его в отдельный новый домен приложения, gc соберет их после выгрузки и удалит все ссылки?

1 Ответ

1 голос
/ 22 октября 2011

Для начала, классы, которые вы загрузили в домен, не останутся в памяти при выгрузке, если вы не сохраните ссылки.Итак, если вы сделали что-то вроде:

private static var foo:Class = 
    loadedSWF.loaderInfo.applicationDomain.getDefinition("Foo");

Тогда, очевидно, оно останется в памяти.Есть некоторые другие вещи, о которых нужно знать, в зависимости от версии проигрывателя поведение registerClassAlias() изменилось таким образом, что, если бы он вызывался из загруженного SWF, псевдоним был бы зарегистрирован в родительском домене, таким образом, не было бы никакихпозже выгрузить класс, если вы не зарегистрируете тот же псевдоним для другого класса.В некоторых более поздних, но не в последней версии, он будет правильно регистрировать классы в правильном домене, но он нарушит код некоторых людей ... вздох , и сегодня его поведение непредсказуемо, он попытается решитькакой домен пытается зарегистрировать псевдоним, основанный на использовании этого класса в этом домене, который, конечно, может отличаться во время выполнения ...

...