Слушатель событий вполне может быть причиной того, что он все еще находится в памяти. Это не хороший способ проверить, было ли что-то собрано или нет.
Кроме того, даже если бы это был хороший способ проверить, был ли объект собран мусором, сбор не является мгновенным процессом. Flash Player запускает gc только тогда, когда ему нужно выделить больше памяти и он не может этого сделать.
При условии, что у вас нет других ссылок на объект маркера, кроме списка отображения и массива маркеров, то того, что вы сделали, достаточно, чтобы он стал сборщиком мусора.
РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос о том, есть ли способ наблюдать, был ли объект был собран ...
Вы можете использовать объект как ключ в словаре со слабым ключом.
private var _dict:Dictionary = new Dictionary(true);
_dict[bullet] = "Bullet is still here...";
Тогда всякий раз, когда вы хотите проверить, существует ли пуля, вы используете цикл for ... in для итерации ключей
for(var key:* in _dict){
trace(key + " " + _dict[key]);
}
Поскольку ключи со слабым ключом словаря не считаются ссылками для целей сборки мусора, это работает.
Если вы очень обеспокоены утечками памяти, вы можете записать пул объектов, в который вы помещаете старые объекты маркеров, которые вы удаляете со сцены, и просто использовать их снова и снова. Таким образом, вы никогда не допустите, чтобы любые пули собирались мусором, но вы, вероятно, когда-либо создадите только небольшое, ограниченное количество пуль (то есть количество пуль, которые пользователь когда-либо видит на экране одновременно при данное время). Это может быть лучшим решением для вас, поскольку пули, вероятно, занимают мало места в памяти, и вы получаете бонус, не заставляя Flash очищать свой мусор. Запуск GC приводит к снижению производительности во время удаления мусора, поэтому с помощью этой меры делать все возможное, чтобы предотвратить даже необходимость в этом, - хорошая вещь.