![]() |
Цитата:
Запомните пожалуйста, "слушатель" который вы создаёте, находится в том объекте, над которым вы вызвали addEventListener. Если этот объект находится в области родительского контейнера, нет необходимости отписываться. Цитата:
И "вручную" вам никак не удалить объект. Вы не имеете прямого доступа к памяти. Полностью удаляет - только gc. |
Цитата:
Но вот как это выглядит в коде я не понимаю. И я не понимаю, почему если я в класс Container передам ссылку на статическое свойство, обявленное в классе Main, Container не удалится.. Подскажите пожалуйста :) |
Цитата:
Статические свойства принадлежат классу, а не "во всех экземплярах сохранят своё значение". Цитата:
Цитата:
Код AS3:
"Диспатчер, вот тебе ссылка на someFunc, вызови ее когда посчитаешь, что произошел Event.COMPLETE". Таким образом, тот, кто отсылает событие (dispatcher), имеет ссылку на того, кто его получает (someFunc и объект, которому она принадлежит). Именно этим и руководствуется GC при просмотре ссылок для удаления объектов. |
Akopalipsis,
Сами классы всегда доступны. Их Статические свойства и методы то-же. Любой объект, добавленный в статическое свойство класса (или список в статическом свойстве) - никогда не удалится, потому-что до него "можно достучаться". |
Цитата:
|
Спасибо Вам за ответы!
Цитата:
что либо он не удаляется и в случаи, когда переменная _object и в Main и в Container обьявлена обычной, либо удаляется, даже если она обьявлена статической. Так как профайлер показывает, что в обоих случаях Count и Memory становятся ноль 0, а Maximum всегда 1.. |
Цитата:
И ещё, пройдя путь от восторга до презрения по отношению к GC, я до сих пор не могу понять: следует ли вообще где-то в коде писать System.gc, если в релизе GC всё равно будет запускаться, когда вздумается ему? Или я опять всё напутал? |
Вам нужно вот что понять ( могу ошибаться сам, но если я не прав, поправьте ), вот Вы создали экземпляр класса ПервыйУровень. Ссылка на него должна быть только в одном месте, в месте его инициализации.
В этом экземпляре Вы создаете всё что нужно, но только так, чтобы на созданное ссылки были только у экземпляра ПервыйУровень. И вот когда Вы удалите экземпляр ПервыйУровень, то всё что в нем есть, будет доступно для GC, так ссылок на содержимое ПервыйУровень больше не у кого нет. |
Цитата:
И не нужно дергать GC самостоятельно. Оно для отладки только сделано. Если хочется повлиять на работу GC, то можно применить pauseForGCIfCollectionImminent (Flash Player 11, AIR 3). Рассказывают как оно работает. |
Цитата:
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 08:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.