Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 27.01.2011, 06:04
VitaliyKrivtsov вне форума Посмотреть профиль Отправить личное сообщение для VitaliyKrivtsov Посетить домашнюю страницу VitaliyKrivtsov Найти все сообщения от VitaliyKrivtsov
  № 1  
Ответить с цитированием
VitaliyKrivtsov
 
Аватар для VitaliyKrivtsov

блогер
Регистрация: Apr 2010
Сообщений: 99
Записей в блоге: 5
Отправить сообщение для VitaliyKrivtsov с помощью ICQ Отправить сообщение для VitaliyKrivtsov с помощью Skype™
Attention Вопрос по Garbage Collector

задался вот таким вопросом: "Если в приложение загружается изображение или мувик (не важно, что именно ) и после загрузки нужно удалить loader, то как правильно (если так можно выразится) удалить этот loader, что бы он не завис в памяти с концами". Почитал не много немало литературы по этой теме, в частности заглянул в книгу Мука, вообщем написано везде, что нужно удалить все ссылки на объект а потом обнулить, но как быть в случае, когда нужно, например, загрузить картинку а после удалить loader, но при этом у нас есть ссылка на битмап, удаляем все слушатели , обнуляем loader , выводи в трейс и получаем null, то есть то к чему стремились, но мне не до конца понятно, удалится из памяти сборщиком мусора loader или нет ? И, наверное, из-за того, что есть ссылка на одно из его свойств, а точнее на свойство contentLoaderInfo.
Вот кусок кода в пример:
Код AS3:
private function  loadImage (  ):void {
    var loader:Loader = new Loader( );
    loader.load( new URLRequest("1.jpg") );
    loader.contentLoaderInfo.addEventListener( Event.INIT, initHandler ); 
}
 
private function initHandler( e:Event ):void
{
    var loader:Loader = Loader( e.target.loader );
    var byteArray:ByteArray = ByteArray( e.target.bytes );// а вот и ссылка )
    var bitmap:Bitmap = Bitmap( loader.content );// а вот еще одна ссылка )	// 
    loader.contentLoaderInfo.removeEventListener( Event.INIT, initHandler );
    loader = null;// равно теперь null 	
}
То есть у нас две ссылки на свойство объекта, не на сам объект конечно. Но если все-таки объект удаляется, то удаляются и все значения свойств объекта, значит из памяти должны очистится Bitmap и ByteArray, но это не может произойти из-за, что есть на них ссылки, и свою очередь, ничего на самом деле так и не удалилось. Если я что-то не так сказал о процессе сборки мусора, исправьте пожалуйста.


Последний раз редактировалось VitaliyKrivtsov; 27.01.2011 в 06:07.
Создать новую тему   Часовой пояс GMT +4, время: 03:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.