Форум 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=128056)

nick_van_rijn 29.07.2009 13:11

Как вернуть виртуальную память
 
Доброго времени. Написан код на AS3. Код работает в контейнере и отображается в Win32 приложении Delphi, используется ExternalInteface. Часть объектов сцены создана статически, часть создается динамически. Пока приложение никто не трогает память не течет, как только происходит действие начинает течь именно виртуальная память. Прочел все со словами GС и штуки c принудительным его запуском. Написал код
Код AS3:

public dynamic class New extends MovieClip{
                public var VFon:Fon; 
                public var VBalans:TCaption; 
                public var VButton:TextButton; 
                public var VButton1:TextButton; 
        public function New():void        {
        VFon= new Fon;
        VFon.x = 0;
        VFon.y = 0;
        VFon.width = 1280;
        VFon.height  = 1024;
        VButton = new TextButton;
        VButton.x = 20;
        VButton.y = 20;
    VButton1 = new TextButton;
        VButton1.x = 80;
        VButton1.y = 80;
        VFon.name = '123'
        this.addChild (VFon);
        this.addChild(VButton);
        this.addChild(VButton1);
        VButton.addEventListener (MouseEvent.CLICK, VButtonClick, false, 0, true);
        VButton1.addEventListener (MouseEvent.CLICK, VButtonClick1, false, 0, true);
            }
 
          public function VButtonClick(MEvent:MouseEvent):void {
          trace (this.VFon.name);
          removeChild(this.VFon);
          VFon = null;
        //  delete VFon;    //удаляем если динамическое свойство
          }
        public function VButtonClick1(MEvent:MouseEvent):void {
        VFon= new Fon;
        VFon.x = 0;
        VFon.y = 0;
        VFon.width = 1280;
        VFon.height  = 1024;
        this.addChildAt (VFon,0);
          }

Создаю объект VFon, и удаляю его.... смотрю на память- увеличивается... как заставить AS3 удалить его из памяти фактически?
Механизм
Код AS3:

 try {
                                  new LocalConnection().connect('Crio');
                                  new LocalConnection().connect('Crio');
                                } catch (e:*) {}

не работает. Еще одна пугающая деталь,
System.totalMemory при работе в плэйере пишет похожий на правду результат а в контейнере непонятные цифры, может из за это GC и не запускается?

wvxvw 29.07.2009 14:49

Принудительный вызов мусорщика не удалит из памяти ничего, если удалять нечего. Кроме того, есть System.gc() и не нужно этих извращений с LC - они в релизном плеере все равно не работают :) А проверять надо флексовым профайлером, т.как все остальные способы - долго, мучительно, и однозначо все равно не определите.

nick_van_rijn 29.07.2009 15:25

вопрос изменился....оказывается GC правильно работает и вообще работает только если запускать в самом плэйере, а в контейнере неверно определяет память процесса и не запускает GC

Добавлено через 12 минут
скажу больше - IE использует Flash9c.ocx - ошибка при определении памяти числа какие то странные - от 2- до 3-ки, GC не запускается, Firefox - сам играет flash, память определяет правильно GC запускается. Проблема в Adobe ActiveX компоненте. Поменял на 10 плэйер, все тоже самое.

alatar 29.07.2009 21:13

http://habrahabr.ru/blogs/Flash_Platform/65295/

silin 29.07.2009 21:56

в 10-ом плеере есть возможность запустить GC в релизной версии без шаманства с LC: http://www.flasher.ru/forum/blog.php?b=83
может так попробовать

nick_van_rijn 30.07.2009 12:13

Скайпа не стоит, System.gc() - не видно работы. Течет таки ocx, т.к. проблемы только у тех процессов которые загружают ocx и работают через ActiveX.


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

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