![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 6
|
Есть игра ( приложение в ВК ) http://vk.com/app1716125_82880621?ref=1.
В ней есть несколько карт. На каждой карте рисуються звездочки возле иконок миссий ( итого около 120 звездочек на каждой карте: они могуть быть серыми или желтыми ( 2 разных MovieClip ) ). При переходе из карты на карту звездочки ( и все остальное ) перерисовуються ( меняеться количество звездочек, местоположение и т.п., ну и в общем звездочки на самом деле являются частью другого класа ). Но суть вот в чем: при переходе из карты на карту все перерисовывается, но проведеный профайлинг показал что старые звездочки не успевают удаляться, и память засорается. Такая же проблема много где. Есть ряд мест в игре где некоторые объекты не успевают удаляться. Это ведет к засорению памяти и подвисанию игры. Что подскажете? мне советовали пул объектов, но ниче такого не нашел. Плюс на сколько я знаю gc вызывать насильно нельзя. |
|
|||||
|
120 это вообще не количество и пул объектов для данного случая не нужен. Тут скорее всего они не то чтобы не успевают удаляться, а вообще не удаляются. Либо просто сборщик мусора еще не был запущен.
Поясните подробнее динамику работы сборщика мусора. Что значит не успевают удаляться? Это значит удаляются, но много позже? Или как? |
|
|||||
|
принудительный запуск GC http://silin.su/#AS3/utils/gc
|
|
|||||
|
Регистрация: Jun 2012
Сообщений: 6
|
Да, удаляються, но позже, намного. А объекты создаються все новые и новые.
|
|
|||||
|
Регистрация: May 2012
Сообщений: 18
|
Цитата:
![]() |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
|
Принудительный запуск - это костыли, хотя может быть, частое вынуждение GC работать понемногу уменьшит моменты, когда он работает очень много, ашник флешка подвисает.
По крайней мере, посмотреть, будет ли результат от беспокойства GC готовыми костылями (уже написанными за Вас) не займет много времени (сам всегда использовал другие методы типа пула или других специфических оптимизаций, ведь принудительный запуск - это только _ненадёжное_ изменение временных промежутков работы GC, а не общей производительности) Плюс этот костыль впринципе не уменьшит тормоза от инициализации объекта, от выделения под него памяти. Только размажет время уничтожения. Цитата:
Важно ведь не количество, а объемы памяти, время на инициализацию одного объекта. Последний раз редактировалось expl; 15.06.2012 в 01:21. |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 6
|
Да, согласен с EXPL, пробовал сделать с GC, но пуллы дали намного лучше результаты.
Правда есть еще одна странная проблема. Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton, хотя и мы их вовсе не создаем, плюс ниодин клас его не наследует. Может какой-то клас стандартных библиотек его наследует, или что-то такое...Пока не нашел причины. |
|
|||||
|
Вот верно. Использование пула не решает проблему с корявой инициализацией объектов. Собственно о том и речь. Неужели объекты настолько сложные, что 120 штук умудряются заметно замусорить память? Судя по словам автора, в приложении есть серьезные утечки, которые пулом смягчаются, но не решаются.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|