Сборка мусора производится автоматически флеш-движком. Однако это не происходит мгновенно. Во флэш-памяти все, на что нет ссылок, будет GC'ed.
[Подробнее см. http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html]
Так что для вашей функции case что-то ()
for(var i:int = 0; i<100; i++) {
something();
}
Ваши 100 или около того сгенерированные массивы будут «охлаждаться» в течение, вероятно, нескольких мс (варьируется), прежде чем их очистит GC. Однако ...
var stupidArr:Array = [];
for(var i:int = 0; i<100; i++) {
stupidArr.push( something() );
}
Ваши 100 или около того массивов ОСТАЮТСЯ, пока существует переменная 'stupidArr'. Однако, если это произойдет дальше.
stupidArr = null;
OR
stupidArr.pop(); //Looped as desired
До тех пор, пока в массиве вашей функции'thing () 'нет ссылок (очищается при каждом появлении или завершается нулевым). Переменной, доступной для вас. Предмет будет бесплатным для GC. И, следовательно, оставит память.
Так что «Array.slice ()» для вашей функции на самом деле плохая идея, потому что она удваивает потребление памяти до того, как GC (влияет на производительность)
С другой стороны, если, скажем, ваша функция имеет бесполезные переменные, например: ваши счетчики циклов. Они тоже GC'ed, если они не упоминаются в конце дня. Для flash, следовательно, переменная и сборка мусора «довольно просты». Просто знай это правило.
Если каким-либо образом вы можете программно получить доступ к переменной, она сохранится. Если вы не можете, он будет уничтожен.