Показать сообщение отдельно
Старый 30.09.2012, 14:53
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 1  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
По умолчанию Загружаемая флешка и дочерний аппдомен

Потребовалось сделать многоSWFочное приложение, состоящее из кучи "модулей". Модули имели свои интерфейсы, я их грузил в дочерний аппдомен, чтобы можно было приводить swf к этим интерфейсам.

А тут что-то смотрю: утечки памяти. начал копать, оказалось, что это баг плеера (иначе это не назвать). При Loader#unloadAndStop() загруженная флешка удалялась, да не совсем: профайлер (на трех проверил даже) показывал, что все экземпляры подгружаемой флешки остаются в памяти и постоянно копятся. Постоянно. Не чистятся GC вообще.

В итоге я отказался от интерфейсов и дочернего аппдомена, начал использовать Object на свой страх и риск. А тут что-то смотрю, вызываю у swf метод, передаю в нем массив с кастомными экземплярами классов, а они на том конце успешно подхватываются, кастуются к аналогичным классам подгруженной swf и свойства с методами доступны...

Начал проводить эксперименты. Интерфейс заработал. И GC успешно чистит из памяти весь хлам. То есть загрузка вида
Код AS3:
_loader.load(new URLRequest(url));
заработала аналогично
Код AS3:
_loader.load(new URLRequest(url), new LoaderContext(false, ApplicationDomain.currentDomain));
Вот я теперь сижу весь в непонятках — КАК?!
Как это работает? Объясните, пожалуйста.
__________________
тут я