как управление памятью as3 - PullRequest
0 голосов
/ 12 ноября 2011

сначала определен класс:

class C1 extends Sprite
{
      public function C1() { super(); }
}

затем напишите следующие коды в Класс документа:

setInterval(function(a:Sprite):void {
    a.addChild(new C1());
}, 10, this);

setInterval(function(a:Sprite):void {
    a.removeChildAt(0);
}, 11, this);

затем запустите его и проверьте использование памяти, оно будет становиться все больше и больше ...

как можно было освободить память при удалении ребенка из корня?

1 Ответ

2 голосов
/ 12 ноября 2011

Flash VM использует сборщик мусора для освобождения памяти. GC будет выполняться игроком в произвольное время, если вы явно не вызовете System.gc(), но этот метод доступен только в AIR и отладочной версии Flash Player. Следовательно, использование памяти может продолжать расти, даже если вы высвободили ресурсы в своей программе, пока не будет выполнен процесс GC.

Также обратите внимание, что addChild() и removeChild() просто добавляют и удаляют элементы в и из списка отображения. Чтобы действительно освободить ресурс, вы должны явно установить все ссылки на него, сохраненные в вашей программе, на null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...