Безопасна ли гибкая память (без утечек) - PullRequest
2 голосов
/ 16 ноября 2008

Я хотел бы создать приложения, которые могут работать в браузере с поддержкой Flash, и решил, что flex будет для меня лучшим вариантом, поэтому я начал это изучать. AFAIK flex имеет GC, но то, как работает этот GC по сравнению с другими языками, которые я видел, может немного отличаться. Я обнаружил this , но, очевидно, есть (или были) огромные утечки памяти, которые не могли быть предотвращены, и намного хуже при запуске в IE.

Гибко безопасно доверять сейчас. Были ли какие-либо утечки, которые были там исправлены?

Ответы [ 5 ]

3 голосов
/ 17 ноября 2008

Я работаю над довольно большим и сложным приложением Flex3, и у нас не было ужасных или неконтролируемых утечек памяти - даже в IE.

Этот пост Гранта Скиннера о сборке мусора в AS3 был очень полезным для меня. Он был опубликован в 2006 году, но все еще актуален (так как мы все еще используем AS3). Он входит в серию из трех частей, посвященную управлению ресурсами, в его посте есть ссылки на соответствующие статьи.

http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html

Что-то, что нужно понять / запомнить, - это то, что приложения Flex запускаются во Flash Player - может быть, вы в этом разбираетесь, но я не думаю, что это совершенно очевидно, если вы не пришли из фона разработки Flash. По крайней мере, я не думаю, что это было бы для меня. :)

2 голосов
/ 22 ноября 2008

Опубликована статья в Adobe DevNet, описывающая сборку мусора в Flash Player:

http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

Когда вы программируете в ActionScript, ваша самая большая проблема, связанная с памятью, заключается в том, чтобы вы не хранили ссылки на ненужные объекты. Например, при добавлении прослушивателя событий убедитесь, что вы также удаляете этот прослушиватель событий, когда он больше не нужен (или узнаете, как использовать слабые ссылки).

По моему опыту, Flex Framework, как правило, хорош в этом типе учета памяти. Объем памяти вашего приложения будет частично зависеть от того, насколько хорошо вы будете кодировать с учетом сборщика мусора.

Если вы сталкиваетесь с проблемами с постоянно увеличивающимся объемом памяти, вы можете использовать Profiler для создания и сравнения снимков памяти с целью обнаружения протекающих объектов. Вы можете найти информацию о профилировщике здесь:

http://livedocs.adobe.com/flex/3/html/profiler_1.html

0 голосов
/ 10 марта 2009

Люди на моей работе говорят, что в ComboBox и автозаполнении Event есть ошибка.

0 голосов
/ 19 ноября 2008

По моему опыту, Flex 2 со временем будет пропускать значительную память, особенно в Firefox 2. Я не уверен насчет Flex 3.

0 голосов
/ 16 ноября 2008

Вот несколько ресурсов, на которые вы можете посмотреть: Отслеживание ошибок Flex , которые вы можете просмотреть для ошибок утечки памяти, которые были исправлены / зарегистрированы. Также в IDE Flex Builder вы можете использовать Profiler для мониторинга использования памяти / ЦП и т. Д. Я не могу конкретно ответить на ваш вопрос. Я думаю, что часть ответственности здесь лежит на вас, разработчике, и на том, как вы разрабатывали и управляли своим кодом. Кроме того, я заметил, что, используя инфраструктуру Flex 3 (или ASVM2 в целом), он хорошо справился с управлением GC для меня. Помните также, что Flex 4 не за горами.

...