![]() |
Flash and memory leaks
Дорогие друзья. Кто занимался этой проблемой (сабж), плиз, поделитесь - какие нашли места утечки, вне зависимости - ваш это был неочевидный косяк или текут встроенные классы.
Ужасно много времени занимает эта проблема. А сумашедший garbage collector поднимает сложность анализа крупного прилодения до дьявольских высот. Для упрощения взаимопонимания. Выключил 90% аппликухи, осталось несколько классов. ASProfiler показывает, что нет никаких периодических вызовов. Однако мемори ликс - есть. Давайте делиться опытом! |
Ну что же. Три дня мучений и пару штук я нашел.
Про netConnection наверное все знают? Ну кто не знает: Код:
var a:NetConnection = ...;Но это простой баг, я его давно нашел. А самый крутой - вот: Вот эта конструкция не дает утечек памяти Код:
setInterval(function() { var c = 0; if(c) { var a = 1; } else { z = 2; } }, 30);Код:
setInterval(function() { if(0) { var a = 1; } else { z = 2; } }, 30);Аналогичным образом, эта конструкция тоже течет Код:
_root.ff = function() { };Код:
setInterval(function() { function() { }, 30);Код:
mc.onEnterFrame = function(){return;};Код:
mc.onEnterFrame = function(){return; _root.aabbcc = 1; };Дальше - не менее круто. Периодические функции, вызываемые через Delegate.create будут течь в любом случае!! Привет всем любителям делегирования от компании macromedia. Также обнаружил что обращение к MovClip.filters внутри периодически вызываемой функции тоже течет. Мои муки с memory leaks в самом разгаре, вполне возможно что список дополнится -) |
Круто. Буду знать.
|
Действительно, круто! Без шуток. Но до конца я не понимаю, в связи с чем такое море проблем возникло. Ты решил провести своего рода "глобальный тест" на утечки что ли?
Или это все было в одном приложении, которое вызывало memory leaks? |
Я пишу desktop application, если не убирать такого рода утечки, аппликуха отжирает за ночь 300 метров и виснет.
кстати, я нашел пример когда Delegate.create не течет.. но пока мне могу разобраться почему -) Слишком большая аппликуха. UPD: 2alexcon314: Кстати, я знаю ты пользуешся цинком? Я кое что тестировал на цинке, и ни один из сэмплов не тек -)) Умный цинк ловит утечки флеш плеера! Но я, к сож, не могу пользоваться цинком. |
Мм-дааа... тут действительно задумаешься. Я не замечал в цинке таких проколов, но теперь буду внимательнее. У меня после беглого теста возникло предположение, что lekas начинается если идут переходы по кадрам. В одном кадре с этими примерами ничего необыкновенного не происходит. И в цинке - leak происходит непонятными рывками и проц на грани падения. Когда в одном кадре - все спокойно.
не пытал только Net.connection. И не оставлял на ночь. У меня сразу все начинается, если начинается вообще. А ты как тестишь? |
Короче.
1. Последние исследования показали что флеш плеер течет, и будет течь неостановимо (АС2! АС3 почти не течет). Так что все, кто занимается этой проблемой - забейте. 2. Zinc - подбирает память за ФП, так что Zinc - решение для АС2 юзеров. Для меня - проблема в том что Zinc адски тормозит в транспарент моде. 3. Для писателей АС2-аппликух для работы в браузере - убойтесь ФП. И переходите на АС3. |
Дорогие друзья. Хочу принести извинения за некорректные сведения.
Еще несколько (сотен) тестов совершенно изменили картину. Не вдаваясь в подробности: новые результаты: 1. Единственный проверенный источник утечек, из тех, что я упоминал - net_connection_instance.onResult(..); 2. Флюктуации с памятью при работе со всеми остальными приведенными примерами исправляются garbage collector'ом ФП. Через некоторое время, при суммарных утечках не менее ~2МБ (вот и причина моих преждевременных выводов, - я не дожидался этого момента). 3. MDM Zinc не стал течь на каких тестах, из тех что я ему давал. Впрочем, я нисколько не уверен что и он не имеет своих дыр. PS. Господа модеры. Возможно, во избежание смущения, умов этот тред надо удалить? |
Пусть будет :)
|
Код AS3:
если закомментировать try catch то нет утечки. |
| Часовой пояс GMT +4, время: 19:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.