Принудительно собирать мусор из других приложений Flash? - PullRequest
3 голосов
/ 11 июля 2011

Вчера, когда я играл в игру (Balloons Tower Defense 3), я заметил, что игра со временем начала замедляться, а затем случайно ускоряется очень быстро.Глядя на снижение использования памяти каждый раз, когда я предполагал, что запущен GC.

Как законный вопрос, есть ли способ заставить Flash перейти в GC, скажем, из Firefox?Возможно, есть дополнение или команда, которую вы можете запустить, которая сделает это?Я знаю, что вы можете выполнять System.gc () , но эта игра не моя, поэтому я не могу изменить исходный код с помощью кнопки "Click here to GC".

Ответы [ 2 ]

4 голосов
/ 11 июля 2011

Нет пути, и на самом деле это не то, что вам нужно в любом случае.Принудительное выполнение GC на самом деле ухудшит ситуацию.Те случайные замедления, которые вы видите, могут быть уже запущены GC.

Способ устранения этих замедлений заключается в программировании таким образом, чтобы вы никогда не выделяли или не освобождали память внутри функции обновления.Делайте все необходимые ссылки заранее, никогда не обнуляйте ничего (так как это делает их доступными для сбора) и всегда повторно используйте объекты в основном игровом цикле.После окончания игры достаточно времени, чтобы очистить или восстановить.

1 голос
/ 11 июля 2011

Насколько я знаю, нет способа заставить GC в ActionScript.не из самого кода или окружающего браузера.

* редактировать *

хорошо, есть способ - но вы не должны использовать (и не можете вВыпуск версии флэш-плеера).

Подробнее, здесь: Принудительная сборка мусора в AS3?

...