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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.04.2010, 15:39
Anton Bel вне форума Посмотреть профиль Отправить личное сообщение для Anton Bel Найти все сообщения от Anton Bel
  № 1  
Ответить с цитированием
Anton Bel

Регистрация: Feb 2010
Сообщений: 7
По умолчанию Куда девается память ?

Я раньше писал на С++ и привык что память нужно удалять самому. Теперь пишу на АС и не уверен в правильности работаты с памятью. Концепция Garbage Collector, хорошая, но детали ей работы не понятны. Например такой код.

Код AS3:
  var s:Sprite = new Sprite(100,100);
 // some code
  s = new Sprite(100,100);
Куда девался первый спрайт, GC удалит его из памяти или будет memory leak.

Старый 26.04.2010, 15:45
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Удалит.

з. Ы. У спрайта нет аргументов в конструкторе.

Старый 26.04.2010, 15:47
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 3  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
если остались ссылки, то будет утечка.
Код AS3:
var s:Sprite = new Sprite();
var s2:Sprite = s;
s = new Sprite()
в коде выше утечка. ссылка на первый спрайт осталась в s2. ну это есть грубо и на пальцах. на самом деле может и не будет утечки, зависит от контекста написания данного кода.

Старый 26.04.2010, 15:58
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 4  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
АС3 в этом плане оч интересен. тут надо не меньше чем в сях следить за памятью.
Если не юзаете больше объект, удалите сначала все, что на него навесили, а потом сделайте объект = NULL;
Причем, перед тем, как кончать навеску, проверьте
if (объект !== NULL) { мочить все! }


а вот вам еще пример "утечки":

этот код
Код AS3:
moveTo(0,0); lineTo(0,100);
moveTo(0,0); lineTo(0,100);
moveTo(0,0); lineTo(0,100);
съест памяти втрое больше, чем этот
Код AS3:
graphics.clear();
moveTo(0,0); lineTo(0,100);
graphics.clear();
moveTo(0,0); lineTo(0,100);
graphics.clear();
moveTo(0,0); lineTo(0,100);

Старый 26.04.2010, 16:15
Anton Bel вне форума Посмотреть профиль Отправить личное сообщение для Anton Bel Найти все сообщения от Anton Bel
  № 5  
Ответить с цитированием
Anton Bel

Регистрация: Feb 2010
Сообщений: 7
А если так

Код AS3:
var obj:Object = new Object();
obj.Img = new Sprite(100,100);
// some code
obj = new Object();
Куда уйдет Sprite ? Это ошибка ?

Старый 26.04.2010, 16:20
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 6  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
если в some code ничего существенного не будет - всё нормально, ссылки не станет, объект удалится(может быть, когда-нибудь, когда GC сочтёт что так надо).

Старый 26.04.2010, 16:26
Anton Bel вне форума Посмотреть профиль Отправить личное сообщение для Anton Bel Найти все сообщения от Anton Bel
  № 7  
Ответить с цитированием
Anton Bel

Регистрация: Feb 2010
Сообщений: 7
Ну а если так

Код AS3:
public var s:Sprite = new Sprite(100,100);
 
function SomeFunction()
{
   var s2:Sprite = s;
   s2.x = 100;
}
 
// some code
 
s = null;
Надеюсь, тоже ничего плохого не будет и память удалится.

Старый 26.04.2010, 17:02
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Anton Bel, откуда Вы берёте 100,100 в параметрах?

Старый 26.04.2010, 17:02
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 9  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
а к чему такие махинация с объявлениями экземпляров ?

можно подробнее ?

Старый 26.04.2010, 17:12
Anton Bel вне форума Посмотреть профиль Отправить личное сообщение для Anton Bel Найти все сообщения от Anton Bel
  № 10  
Ответить с цитированием
Anton Bel

Регистрация: Feb 2010
Сообщений: 7
Это код для примера. Придумываю на ходу. Sprite тоже класс для примера, можно использовать Sprite2, если хотите.

Вопрос только об управлении памятью.

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

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

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


 


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


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