Как сделать объекты Flex / ActionScript 3 подходящими для сборки мусора? - PullRequest
1 голос
/ 12 ноября 2009

Как сделать объекты Flex / ActionScript 3 пригодными для сбора мусора? Каковы правила большого пальца? ... извиняюсь, если на этот вопрос ответили еще где.

Ответы [ 5 ]

4 голосов
/ 12 ноября 2009

информация о сборщике мусора здесь

куча дополнительной информации здесь

3 голосов
/ 13 ноября 2009

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

удаление прослушивателей событий довольно интуитивно понятно с *.removeEventListener(event type, function), а для удаления ссылок используйте delete(varName).

выполнение вышеописанного будет работать большую часть времени, но все же есть некоторые случаи, когда этого недостаточно, и чтобы действительно использовать преимущества сборщика мусора, вам необходимо включить вспомогательные методы во все области вашего кода, а не только тогда, когда вы хотите удалить что-то

zombiegx опубликовал два ваших величайших актива при поиске дополнительной информации.

1 голос
/ 14 ноября 2009

Большинство всего, что нужно знать об этом, содержится в тех сообщениях в блоге, перечисленных выше, но основное описание:

  1. удалить все ссылки на объекты. Это включает удаление прослушивателей событий или использование слабых ссылок, как указано выше, и проверку того, что рассматриваемый объект не находится ни в одном объекте коллекции
  2. установить исходный дескриптор объекта равным "null", чтобы помочь сборщику мусора понять, что ссылка больше не активна
  3. ожидание. :) Или воспользуйтесь трюком с Грантом Скиннером (ссылка выше), чтобы быстро запустить сборку мусора.
0 голосов
/ 14 ноября 2009

Определенно прочитайте это: Грант Скиннер - Управление ресурсами для as3 . Это расскажет вам все, что вам нужно знать о сборщике мусора FlashPlayers, и покажет вам несколько советов. Каждый, кто использует as3, должен прочитать его!

0 голосов
/ 13 ноября 2009

http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

Это лучший документ, который я нашел в отношении сбора мусора. Короче говоря, VM2 использует технику под названием Mark Sweeping. Он в основном пересекает каждый объект вашего приложения как дерево и помечает их. Любые объекты, которые больше не отмечены, могут быть освобождены. Этот процесс происходит на нескольких кадрах, а не на всех сразу.

Поэтому, чтобы что-то подходило для сбора мусора, на него не должно быть никаких ссылок, поэтому, например, оно должно быть удалено из списка отображения, никакие другие объекты не содержат ссылку.

Стоит обратить внимание на слабые ссылки. Например, объекты словаря могут использовать слабые ссылки, передавая логическое значение. Это означает, что когда объект помещается в словарь, для которого были установлены слабые ссылки, он не будет считаться ссылкой и, следовательно, будет иметь право на сборку мусора (при условии, что других ссылок на него нет)

...