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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.08.2010, 16:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 31  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Вообще то да)

Старый 24.08.2010, 17:02
bebop вне форума Посмотреть профиль Отправить личное сообщение для bebop Найти все сообщения от bebop
  № 32  
Ответить с цитированием
bebop
 
Аватар для bebop

Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
ну значит никаких проблем

Старый 24.08.2010, 18:08
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 33  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Не понимаю чего так расхваливать CASALib
Я и не хотел этого. Более того, прекрасно обхожусь без нее и ей подобных библиотек, ибо при нормальном подходе польза от нее сомнительная

Цитата:
Но все остальные переменные класса все равно ручками занулять в destroy нужно
Не обязательно. Как уже заметил Zebestov - если нет ссылки на сам объект, то нет и ссылок на его свойства.
__________________
...вселенская грусть

Старый 24.08.2010, 18:18
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 34  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Глум, я написал ведь. Если 2 объекта очень "сцепленны" может быть ситуация, в которой GC будет думать что ссылки на них остались.
Хотя, эту статью где про это рассказывалось читал очень давно. Может, сейчас дела обстоят лучше.

Старый 24.08.2010, 18:26
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 35  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Psycho Tiger, только что проверил.

Немного измененный пример gloomyBrain:

Код AS3:
package {
 
	/**
	 * ...
	 * @author gloomyBrain
	 * @mail CartoonRaccoon@gmail.com
	 */
 
	public class LinkHolder {
 
		private var _link:Object;
 
		public function LinkHolder() {
 
 
		}
 
		public function set link(link:Object):void
		{
			this._link = link;
		}
 
		public function get link():Object {
			return this._link;
		}
 
	}
 
}
при "перекрестном использовании":

Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		private var a:LinkHolder;
		private var b:LinkHolder;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			this.a = new LinkHolder();
			this.b = new LinkHolder();
 
			this.a.link = this.b;
			this.b.link = this.a;
 
			stage.addEventListener(MouseEvent.CLICK, this.onClickHandler);
		}
 
		private function onClickHandler(e:MouseEvent):void
		{
			this.a = null;
			this.b = null;
			// запускаем GC и наблюдаем исчезновение
			// обоих экземпляров LinkHolder
		}
 
	}
 
}
не вызывает "зависания" экземпляров — GC разобрался =)
__________________
Поймай яблоко 2!

Старый 24.08.2010, 18:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 36  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Нет, суть не в этом. Я очень упрощенно сказал, на самом деле ссылок должно быть очень много друг-на друга и желательно больше, чем в 2 объектах. То есть 5 связанных классов, каждый с которым связан, причем больше, чем одной ссылкой.

Короче, ужасный код должен быть)

Старый 24.08.2010, 18:52
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 37  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		private var a:LinkHolder;
		private var b:LinkHolder;
		private var c:LinkHolder;
		private var d:LinkHolder;
		private var e:LinkHolder;
		private var f:LinkHolder;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			this.a = new LinkHolder();
			this.b = new LinkHolder();
			this.c = new LinkHolder();
			this.d = new LinkHolder();
			this.e = new LinkHolder();
			this.f = new LinkHolder();
 
			this.a.link = this.d;
			this.b.link = this.c;
			this.c.link = this.f;
			this.d.link = this.b;
			this.e.link = this.a;
			this.f.link = this.e;
 
			stage.addEventListener(MouseEvent.CLICK, this.onClickHandler);
		}
 
		private function onClickHandler(e:MouseEvent):void
		{
			this.a = null;
			this.b = null;
			this.c = null;
			this.d = null;
			this.e = null;
			this.f = null;
			// запускаем GC и наблюдаем исчезновение
			// всех 6 экземпляров LinkHolder
		}
 
	}
 
}
та шо ж такое =)
__________________
Поймай яблоко 2!

Старый 24.08.2010, 19:10
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 38  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Алгоритму mark-and-sweep пофигу, что-есть перекрестные ссылки, хоть их мильён...
Только я вот не знаю, использует этот алгоритм флешплеер.

Старый 24.08.2010, 19:16
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 39  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Zebestov, а чем этот код отличается от предыдущего? a никак не связан с f. b никак не связан с d и так далее. У всех по одной ссылке.

И я повторюсь - я сам этого дела не тестил, просто давным-давно читал в статье. Это вполне могли уже пофиксить. А может автор статьи вруша. Я лишь донёс мысль, по которой стоило бы писать деструкторы с занулением переменных. Хотя бы ради перестраховки.

Старый 24.08.2010, 22:01
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 40  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Есть такое...
Проверил для "все ссылаются на всех, включая себя" — GC непобедим =)
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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