AS3 - Управление памятью - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть вопрос относительно управления памятью AS3. Интересно, может ли кто-нибудь помочь мне с этим?

Предположим, я создал переменную экземпляра для класса, в данном случае или типа Sound:

public class SoundStore extends Sprite{

var s:Sound;

Затем в различных функциях класса я ссылался на эту переменную несколько раз, каждый раз, когда мне хотелось загрузить новый звук:

s = new Sound();

Правильно ли я считаю, что каждый раз, когда я создаю новый звук, я будуперезаписывать предыдущую выделенную память?

Спасибо

1 Ответ

5 голосов
/ 07 ноября 2011

Нет. AS3 - это язык сборки мусора, который использует подсчет ссылок для удаления неиспользуемых объектов.

Переменная s является внутренним указателем на блок памяти, который содержит объект Sound. Каждый раз, когда вы делаете s = new Sound() AS3, создаете новый объект Sound в памяти и устанавливаете указатель s на адрес этого объекта. Старый объект все еще существует в памяти. Если у вас нет ссылок на старый объект, сборщик мусора избавится от объекта в какой-то момент, обычно его следующего цикла сбора. Это означает, что в любой момент времени в вашей памяти может быть несколько Sound объектов, на которые нет ссылок, но которые все еще расходуют ресурсы. Сборщик мусора предназначен для периодического перемещения по всем выделенным объектам и удаления их, если на них нет ссылок.

Вот хорошая статья о GC во Flash / AS3: http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

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