Руководство по actionscript. часть 2, стр. 106

Снова вернемся к программе по созданию виртуального зоопарка и рассмотрим следующий код. В нем описывается метод для кормления животного яблоками.

package { import flash. display. Sprite: import zoo.*;

public class VirtualZoo extends Sprite { private var pet:Virtual Pet;

public function VirtualZoo ( ) { pet = new VirtualPetC’Stan»): pet. eat(new Applet )); pet. eat(new Apple( )); pet. eat(new Apple( )); pet. eat(new Apple( )); pet. eat(new Apple( ));

}

}

}

Обратите внимание, что при каждом кормлении животного предыдущий код создает новый экземпляр класса Apple и передает этот экземпляр в метод eat ( ). Всякий раз, когда завершается выполнение метода eat ( ), все ссылки на переданный в этот метод экземпляр класса Apple теряются, поэтому данный экземпляр становится доступным для сборки мусора. Теперь представьте, что произойдет, если мы скормим животному 1000 объектов класса Apple. Затраты нашей программы на обработку данных будут включать не только затраты на создание объектов класса Apple, но и затраты на их удаление из памяти в процессе сборки мусора. Чтобы минимизировать подобные затраты, лучше создать один повторно используемый объект класса Apple и применять его при каждом кормлении животного яблоком. Следующий код демонстрирует процесс пятикратного кормления животного одним и тем же объектом класса Apple:

package { import flash. display. Sprite: import zoo.*:

public class VirtualZoo extends Sprite { private var pet-.Virtual Pet: private var apple:Apple;

public function VirtualZoo ( ) { pet = new VirtualPetC’Stan»): apple = new Apple( );

pet. eat(apple); pet. eat(apple); pet. eat(apple); pet. eat(apple); pet. eat(apple);

}

}

}

К затратам предыдущего кода можно отнести затраты на создание единственного объекта. При этом не будет вообще никаких затрат на сборку мусора. Этот подход гораздо более эффективен по сравнению с предыдущим подходом, заключавшимся в создании нового объекта класса Apple и его последующем удалении для каждого вызова метода eat ( )!

Деактивация объектов

Как уже известно, удаление всех ссылок на объект делает его доступным для сборки мусора. Тем не менее даже после этого объект продолжает существовать в памяти до тех пор, пока среда выполнения Flash не решит «смести» его в одном из циклов сборки мусора. С того момента, как объект становится доступным для сборки мусора, и до того, как он фактически будет удален из системной памяти, данный объект продолжает получать события и, в случае объектов класса Function, может по-прежнему вызываться функцией setlnterval ( ).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 04.09.2010">Красочность или функциональность?
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.33
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 141
  • 27.10.2012">«Лаборатория Касперского»: Android 2.3.6 Gingerbread — любимая система злоумышленников
  • 20.02.2010">Как делать деньги в твиттере?
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.165
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.32
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 052
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.113
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.139
  • 10.08.2011">Сделай из смартфона игровую приставку
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 091
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 044
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 036
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 012
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...