Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   "Природа" существования и удаления объектов (http://www.flasher.ru/forum/showthread.php?t=128005)

Герыч 28.07.2009 11:56

Прям фильм ужасов какой-то..
А как проявляется "пожирание" объектов этим страшным монстром GC?? Вот к примеру с Loader'ом?

Вообще GC должен учитывать, находится ли один из методов объекта в стеке исполнения.. а то это крайне нелогично

iflamberg 28.07.2009 12:06

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

switcher! 28.07.2009 12:24

Герыч, видимо имел ввиду, не то, что на практике происходит, а как в теории.
Т.е. у тебя получилось, что съедать не должен, а на практике - съедает ?

Герыч 28.07.2009 13:28

Я конечно не работал с Loader'ом и не знаю, что происходит после того, как он работает после вызова Loader.load(), но что-то мне подсказывает, что он работает, асинхронно, напомяная иногда через события нашей программе о том, что он существует. Но тогда возникает вопрос, если он работает в данный момент, то почему же GC прибирает его в своё царство?) Вот это то, что меня немного удивляет. Поправьте, если я не так понимаю работу loader'а

iflamberg 28.07.2009 13:40

Асинхронно. Вот такой вот тупой GC. С tween'ами ведь та же проблема. Они работают - а их забирают.

terbooter 28.07.2009 20:44

Да, помню.
У меня Лоадеры пропадали и НетСтримы

elfon 28.07.2009 21:18

CG не тупой он так устроен. Нет сслыки на объект, считай уже нет и объекта.
Это расплата за то, что не надо вести учёт динамических объектов в AS, а тут все объекты динамические. В Си на каждый new нужен свой delete.

iflamberg 28.07.2009 21:33

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

elfon 28.07.2009 21:53

Удалить то просто, а уследить за тем не используется ли где удаляемый объект.
Без CG тоже жить плохо)

formyka 23.11.2009 01:55

Я вот не пойму, что вам не понятно? Вот код - где пропадает cпрайт и это абсолютно нормально!

Код AS3:

package {
  import flash.display.*;
  import flash.text.*;
  import flash.utils.*;
  import flash.events.*;
  import flash.system.*;
  public class GarbageCollectionDemo extends Sprite {
 
    public function GarbageCollectionDemo() {
 
      var s:Sprite = new Sprite();
      s.addEventListener(Event.ENTER_FRAME, enterFrameListener);
 
      var timer:Timer = new Timer(1, 0);
      timer.addEventListener(TimerEvent.TIMER, timerListener);
      timer.start();
      }
 
    private function timerListener (e:TimerEvent):void {
      new TextField();
      }
 
    private function enterFrameListener (e:Event):void {
      trace("System memory used by this program: " + System.totalMemory);
      }
    }
  }



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

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