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

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

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
По умолчанию Выгрузка swf с Vector.<T>

Если в модуле есть вектор сложного типа, например Vector.<Sprite>, то имеем утечку памяти.
С простым вектором всё впорядке.
(для чистоты эксперимента модуль компилить в релизном режиме)
Mac, AIR3. Можете проверить под Windows?

https://gist.github.com/5a277685cfcbed6e8ccb


Последний раз редактировалось fljot; 15.12.2011 в 23:23.
Старый 16.12.2011, 03:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Долго думал, как бы такое протестировать, но ничего не придумал - а как именно виден результат?
Ниже мои логи из дебаггера:
Код:
r /home/wvxvw/Projects/as3-tests/bin/Shell.swf
Adobe fdb (Flash Player Debugger) [build 14159]
Copyright (c) 2004-2007 Adobe, Inc. All rights reserved.
(fdb) Attempting to launch and connect to Player using URL
/home/wvxvw/Projects/as3-tests/bin/Shell.swf
Player connected; session starting.
Set breakpoints and then type 'continue' to resume the session.
[SWF] home/wvxvw/Projects/as3-tests/bin/Shell.swf - 38,963 bytes after decompression
(fdb) b Shell.as:40
Breakpoint 1: file Shell.as, line 40
(fdb) b Shell.as:27
Breakpoint 2: file Shell.as, line 27
(fdb) c
Breakpoint 2, load() at Shell.as:27
 27         if (loader)
(fdb) n
 30         loader = new Loader();
(fdb) n
 31         addChild(loader);
(fdb) n
 32         var context:LoaderContext = new LoaderContext();
(fdb) n
 33         context.applicationDomain = new ApplicationDomain();
(fdb) n
 34         loader.load(new URLRequest("Module.swf"), context);
(fdb) n
 35     }
(fdb) n
[SWF] home/wvxvw/Projects/as3-tests/bin/Module.swf - 1,419 bytes after decompression
Execution halted, onMouseOut() at PushButton.as:173
 173   // code goes here
(fdb) n
 175   // code goes here
(fdb) c
Additional ActionScript code has been loaded from a SWF or a frame.
To see all currently loaded files, type 'info files'.
Set additional breakpoints as desired, and then type 'continue'.
(fdb) info files
---
FontAsset.as#6
IFlexAsset.as#5
mx_internal.as#8
---
Component.as#2
Label.as#7
Module.as#10
PushButton.as#3
Shell.as#1
Style.as#4
(fdb) info swfs
Shell.swf - 38,963 bytes after decompression, 8 scripts [#1 - #8]+ remaining source is still being loaded, url is fi
le:///home/wvxvw/Projects/as3-tests/bin/Shell.swf                                                                  
Module.swf - 1,419 bytes after decompression, 1 scripts [#10 - #10]+ remaining source is still being loaded, url is 
file:///home/wvxvw/Projects/as3-tests/bin/Module.swf                                                               
(fdb) c
Breakpoint 1, unload() at Shell.as:40
 40         if (!loader) return;
(fdb) n
 42         removeChild(loader);
(fdb) n
 43         loader.unloadAndStop(true);
(fdb) n
 44         loader = null;
(fdb) n
 45     }
(fdb) n
[UnloadSWF] home/wvxvw/Projects/as3-tests/bin/Module.swf
Execution halted, onMouseOut() at PushButton.as:173
 173   // code goes here
(fdb) n
 175   // code goes here
(fdb) c
Breakpoint 1, unload() at Shell.as:40
 40         if (!loader) return;
(fdb) info files
---
FontAsset.as#6
IFlexAsset.as#5
mx_internal.as#8
---
Component.as#2
Label.as#7
Module.as#10
PushButton.as#3
Shell.as#1
Style.as#4
(fdb) info swfs
Shell.swf - 38,963 bytes after decompression, 8 scripts [#1 - #8]+ remaining source is still being loaded, url is fi
le:///home/wvxvw/Projects/as3-tests/bin/Shell.swf                                                                  
(fdb) c
q
Do you want to attempt to halt execution? (y or n) y
Attempting to halt.
To help out, try nudging the Player (e.g. press a button)
Execution halted in 'Module.swf' at 0x00009890 (39056)
(fdb) q
The program is running.  Exit anyway? (y or n) y

Process terminal finished
__________________
Hell is the possibility of sanity

Старый 16.12.2011, 03:35
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 3  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Олег, вот я сделал ещё версию для лёгкого теста https://dl.************/s/i1yqq9e9spp...duleLoader.swf
код: https://gist.github.com/5a277685cfcbed6e8ccb (добавил)

Память нифига не чистится — вот как видно. Подгружаемый модуль — он же ужас какой элементарный.
Человек тут говорит вот FP 10.3 Win — всё впорядке. А на 11ом и AIRе, похоже, того.

Старый 16.12.2011, 04:24
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
А если так? Изменится ли что-нибудь?
Код AS3:
removeChild(loader);
var s:Sprite = new Sprite();
s.removeChild(s.addChild(loader.content));
loader.unloadAndStop(true);
loader = null;

Старый 16.12.2011, 04:29
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 5  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от i.o. Посмотреть сообщение
А если так? Изменится ли что-нибудь?
Неа.

Я дома под виндами попробовал — 11.1 тоже глючит. И на андроиде тоже. А 10.3 вроде нормально. Народ, есть кто на десктопном линуксе?

... заполнил баг https://bugbase.adobe.com/index.cfm?...bug&id=3071138

Старый 16.12.2011, 05:18
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 6  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
заполнил баг https://bugbase.adobe.com/index.cfm?...bug&id=3071138
отдал свой голос. А то исправляют годами..

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Я ведь не галлюцинирую?

Старый 16.12.2011, 10:40
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 8  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Цитата:
Сообщение от fljot Посмотреть сообщение
Я ведь не галлюцинирую?
Определенно нет, пойду свой код проверять...
vote[+]
__________________
Блог, Twitter
Брюзга.


Последний раз редактировалось mayakwd; 16.12.2011 в 10:54.
Старый 16.12.2011, 10:46
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 9  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Проголосовал, зацепил бы им аттач туда с тестом.

Добавлено через 1 минуту
Сейчас посмотрю в Ubuntе.

Добавлено через 1 час 15 минут
Подтверждаю на ubuntе. Плеер 10, память растёт.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 16.12.2011, 13:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я могу предположить как может получаться утечка памяти - определение вектора создается по факту использования, за исключением векторов для примитивных типов, для которых существуют специальные отдельные классы. И это определение потом мешает выгрузить всю флешку.
Но я не вижу каким образом тест это проверяет :S Нужен какой-нибудь ожидаемый и какой-нибудь действительный результат. Например, если бы в загружаемой флешке было два кадра и на одном из них был бы trace(), если после выгрузки трейсы не пропали бы - можно было бы утверждать, что выгрузить не получилось.
Еще я не уверен, что будет если попробовать getDefinitionByName("__as3__.vec.Vector.&lt;Sprite>") или как там записывается имена векторов.
__________________
Hell is the possibility of sanity

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

Теги
memory leak , Vector
Опции темы
Опции просмотра

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

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


 


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


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