Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Засорение памяти: объекты не успевают удаляться. (http://www.flasher.ru/forum/showthread.php?t=181040)

dimalisovyk 14.06.2012 02:08

Засорение памяти: объекты не успевают удаляться.
 
Есть игра ( приложение в ВК ) http://vk.com/app1716125_82880621?ref=1.
В ней есть несколько карт. На каждой карте рисуються звездочки возле иконок миссий ( итого около 120 звездочек на каждой карте: они могуть быть серыми или желтыми ( 2 разных MovieClip ) ). При переходе из карты на карту звездочки ( и все остальное ) перерисовуються ( меняеться количество звездочек, местоположение и т.п., ну и в общем звездочки на самом деле являются частью другого класа ). Но суть вот в чем: при переходе из карты на карту все перерисовывается, но проведеный профайлинг показал что старые звездочки не успевают удаляться, и память засорается.
Такая же проблема много где. Есть ряд мест в игре где некоторые объекты не успевают удаляться. Это ведет к засорению памяти и подвисанию игры. Что подскажете? мне советовали пул объектов, но ниче такого не нашел. Плюс на сколько я знаю gc вызывать насильно нельзя.

kackbip 14.06.2012 07:47

120 это вообще не количество и пул объектов для данного случая не нужен. Тут скорее всего они не то чтобы не успевают удаляться, а вообще не удаляются. Либо просто сборщик мусора еще не был запущен.
Поясните подробнее динамику работы сборщика мусора. Что значит не успевают удаляться? Это значит удаляются, но много позже? Или как?

silin 14.06.2012 08:53

принудительный запуск GC http://silin.su/#AS3/utils/gc

dimalisovyk 14.06.2012 14:53

Да, удаляються, но позже, намного. А объекты создаються все новые и новые.

kukareku 14.06.2012 18:07

Цитата:

Сообщение от silin (Сообщение 1084555)
принудительный запуск GC http://silin.su/#AS3/utils/gc

А не подскажете, где взять этот silin.utils.GarbageCollector ? В архиве по ссылке Source я его не нашла :(

udaaff 14.06.2012 18:29

http://silin.su/#About

expl 15.06.2012 01:14

Принудительный запуск - это костыли, хотя может быть, частое вынуждение GC работать понемногу уменьшит моменты, когда он работает очень много, ашник флешка подвисает.
По крайней мере, посмотреть, будет ли результат от беспокойства GC готовыми костылями (уже написанными за Вас) не займет много времени (сам всегда использовал другие методы типа пула или других специфических оптимизаций, ведь принудительный запуск - это только _ненадёжное_ изменение временных промежутков работы GC, а не общей производительности)

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

120 это вообще не количество и пул объектов для данного случая не нужен.
На некоторых проектах наблюдал ускорение в разы при гораздо меньшем количестве объектов.

Важно ведь не количество, а объемы памяти, время на инициализацию одного объекта.

dimalisovyk 17.06.2012 02:55

Да, согласен с EXPL, пробовал сделать с GC, но пуллы дали намного лучше результаты.

Правда есть еще одна странная проблема. Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton, хотя и мы их вовсе не создаем, плюс ниодин клас его не наследует. Может какой-то клас стандартных библиотек его наследует, или что-то такое...Пока не нашел причины.

kackbip 17.06.2012 13:45

Цитата:

Сообщение от expl (Сообщение 1084681)
время на инициализацию одного объекта.

Вот верно. Использование пула не решает проблему с корявой инициализацией объектов. Собственно о том и речь. Неужели объекты настолько сложные, что 120 штук умудряются заметно замусорить память? Судя по словам автора, в приложении есть серьезные утечки, которые пулом смягчаются, но не решаются.

expl 17.06.2012 16:43

Цитата:

Профайлер FlashDevelop показывает что постоянно создаються объекты типа SimpleButton
Может ими кто-то что-то во Flash IDE рисовал, а потом это оказалось в подгружаемой swf-ке?


Часовой пояс GMT +4, время: 00:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.