У меня есть комментарий к тем, кто говорит, что вы никогда не должны делать GC вручную. Я привык к ручному управлению памятью в C ++ и предпочитаю sharedptr, а не GC, но в любом случае.
Есть особый случай, когда я не могу найти другое решение, чем GC. Обратите внимание: у меня есть класс DataCache, он работает так, как будто он сохраняет объекты результатов для определенных вызовов методов, которые отправляют обновленные события при обновлении / получении данных. Способ обновления кеша заключается в том, что я просто удаляю из него все результаты и отправляю событие, которое заставляет всех оставшихся слушателей повторно запрашивать свои данные, и слушатели, вышедшие из области видимости, не должны повторно запрашивать, что очищает ненужные результаты. Но, очевидно, если я не смогу заставить всех слушателей, которые все еще болтаются, ждать немедленной очистки GC перед отправкой события «еще раз запросить ваши данные», эти болтающиеся слушатели будут без необходимости снова запрашивать данные. Так как я не могу удалитьEventListener, потому что в AS3 нет деструкторов, я не вижу другого простого решения, кроме как заставить GC убедиться, что слушателей больше нет.
(Правка) Кроме того, я не могу использовать removeEventListener в любом случае для привязки, которая была настроена в mxml, например (используя мой пользовательский класс DataCacher, который обрабатывает remoteobj)
<mx:DataGrid id="mygrid" dataProvider="{DataCacher.instance().result('method').data}" ... />
Когда всплывающее окно, содержащее эту сетку данных, закрыто, можно ожидать, что привязки будут уничтожены. По-видимому, они живут и продолжают. Хм, не следует гибко уничтожать все привязки (то есть списки событий) объекта, когда он помечен как для GC, потому что последняя ссылка удалена. Это решило бы проблему для меня.
По крайней мере, поэтому я думаю, что я все еще новичок во Flex, поэтому любые мысли будут оценены.