![]() |
Засорение памяти: объекты не успевают удаляться.
Есть игра ( приложение в ВК ) http://vk.com/app1716125_82880621?ref=1.
В ней есть несколько карт. На каждой карте рисуються звездочки возле иконок миссий ( итого около 120 звездочек на каждой карте: они могуть быть серыми или желтыми ( 2 разных MovieClip ) ). При переходе из карты на карту звездочки ( и все остальное ) перерисовуються ( меняеться количество звездочек, местоположение и т.п., ну и в общем звездочки на самом деле являются частью другого класа ). Но суть вот в чем: при переходе из карты на карту все перерисовывается, но проведеный профайлинг показал что старые звездочки не успевают удаляться, и память засорается. Такая же проблема много где. Есть ряд мест в игре где некоторые объекты не успевают удаляться. Это ведет к засорению памяти и подвисанию игры. Что подскажете? мне советовали пул объектов, но ниче такого не нашел. Плюс на сколько я знаю gc вызывать насильно нельзя. |
120 это вообще не количество и пул объектов для данного случая не нужен. Тут скорее всего они не то чтобы не успевают удаляться, а вообще не удаляются. Либо просто сборщик мусора еще не был запущен.
Поясните подробнее динамику работы сборщика мусора. Что значит не успевают удаляться? Это значит удаляются, но много позже? Или как? |
принудительный запуск GC http://silin.su/#AS3/utils/gc
|
Да, удаляються, но позже, намного. А объекты создаються все новые и новые.
|
Цитата:
|
|
Принудительный запуск - это костыли, хотя может быть, частое вынуждение GC работать понемногу уменьшит моменты, когда он работает очень много, ашник флешка подвисает.
По крайней мере, посмотреть, будет ли результат от беспокойства GC готовыми костылями (уже написанными за Вас) не займет много времени (сам всегда использовал другие методы типа пула или других специфических оптимизаций, ведь принудительный запуск - это только _ненадёжное_ изменение временных промежутков работы GC, а не общей производительности) Плюс этот костыль впринципе не уменьшит тормоза от инициализации объекта, от выделения под него памяти. Только размажет время уничтожения. Цитата:
Важно ведь не количество, а объемы памяти, время на инициализацию одного объекта. |
Да, согласен с EXPL, пробовал сделать с GC, но пуллы дали намного лучше результаты.
Правда есть еще одна странная проблема. Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton, хотя и мы их вовсе не создаем, плюс ниодин клас его не наследует. Может какой-то клас стандартных библиотек его наследует, или что-то такое...Пока не нашел причины. |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 00:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.