Какой самый лучший HTML / JavaScript Framework для приложения Flex? - PullRequest
0 голосов
/ 23 октября 2009

В настоящее время мы создаем приложение Flex с использованием инфраструктуры PureMVC с shell.swf, который динамически загружает / выгружает модули. У нас проблемы с памятью, и мы хотим заменить shell.swf загрузчиком на основе JavaScript.

Два вопроса:

  1. Какой была бы хорошая структура для динамической загрузки компонентов Flex и обеспечения связи между модулями?

  2. Будет ли динамическая загрузка / выгрузка модулей через JavaScript устранять типичные проблемы с памятью, связанные с приложениями Flex / Flash?

1 Ответ

3 голосов
/ 23 октября 2009

Если вам нужны отдельные элементы Flash на странице для связи друг с другом, вы, вероятно, в конечном итоге будете использовать LocalConnection. При этом вам необходимо изучить использование Runtime Shared Libraries (RSL) для инфраструктуры Flex - в противном случае каждый из ваших SWF-файлов должен будет содержать свою собственную копию среды Flex.

Теперь, как уже говорилось, проблемы, связанные с памятью, на самом деле не связаны с платформой, а связаны с проблемами, связанными с ссылками на объекты и, возможно, с перегрузкой ЦП.

Сборщик мусора Flash запускается только тогда, когда у него есть для этого время, поэтому, если ваше приложение довольно сильно загружает процессор, GC может никогда не запуститься. Если вы запускаете свое приложение в режиме отладки с помощью Flex, вы можете принудительно запустить GC, чтобы проверить, так ли это.

GC Flash основан на концепции метки и развертки. Объекты, которые существуют, но не имеют ссылок на них, сначала помечаются, а затем выявляются ошибки в GC. Это означает, что если вы оставите ссылки на «мертвые» объекты вокруг, они никогда не будут освобождены. Распространенным виновником этого являются события и слушатели событий. Как правило, рекомендуется всегда использовать слабые ключи (избегая создания ссылок, которые учитываются GC) с addEventListener.

// don't do this
foo.addEventListener(Event.CHANGE, onChange);

// do this
foo.addEventListener(Event.CHANGE, onChange, false, 0, true);

У Гранта Скиннера есть отличная серия по управлению ресурсами в AS3 , которую вы также должны проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...