Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   про освобождение памяти -System.gc() (http://www.flasher.ru/forum/showthread.php?t=118939)

wvxvw 08.12.2008 15:56

Если это и есть весь код, то зачем же ГК включаться? Я думаю, что если попробовать в слушателе делать какие-нибудь операции с массивом, то ГК когда-нибудь все-таки сработает, а так никаких изменений во флешке не происходит, так и ГК незачем включаться...

Волгоградец 08.12.2008 16:29

Попробовал. Результат тот же самый. Флэш-приложение съело у меня 1/3 всей памяти и не чистит ее, хотя память уже не используется.

kia007 09.12.2008 17:22

блин а кроме профайлера можно как нить всетаки посмотреть что там в памяти копиться....отследить щас не могу, а память копиться:(

wvxvw 09.12.2008 17:59

Нет, вряд ли... только исключать разные участки кода и смотреть что получится.

kia007 09.12.2008 18:50

вот здесь
http://x-geom.net/blog/?p=48
описано как можно пользоваться профайлером для внешних флэшек, отак я чет не нашел пункта profile:)
версия у меня flex 3.0 professional

все запустил профайлер....смотрю, красивый график вверху и табличку.
Но нифига пока не понимаю, память растет....почему растет непонятно.
Обратил внимание что число *commulative instances* класса Socket постоянно растет но объект этого класса я содзаю один раз в конструкторе флэшки, чтобы общатся с сокетом. Каким макаром еще экземлпяры класса Socket создаются я не понимаю. Хотя память на этот обэект сокета не растет....может это и нормально.
Вообщем не очень понятно как с этим профайлером работать. Данные таблицы на сколько я вижу отличаются от графика...
Может отдельную тему создать по работе с профайлером?:)

wvxvw 09.12.2008 20:24

Вот, посмотри еще по этому линку описание:
http://livedocs.adobe.com/flex/3/htm...rofiler_3.html
(и по линку из коментов на той же странице, там ссылка на пакедж-функции пакета flash.sampler)

А тут объяснение по интерфейсу (с картинками)
http://labs.adobe.com/wiki/index.php...mory_Profiling

Firexel 09.12.2008 20:51

Сборщик мусора (преславутый System.gc(); ) в Action Script подобен тому, что используется в Java - все-таки одна спецификация. Его работа - удалять те объекты, на которые программа больше не ссылается. То есть если количество ссылок на объект стало равно 0 - освободить память по адресу объекта. Происходит это автоматически а вызов при правильной архитектуре программы не требуется нигде. Он всего-лишь "напоминает" сборщику начать действовать. А начнет-ли он или нет - это его решение. В java, и в особенности МЕ (для мобильников) вызов System.gc() задействуется только в алгоритмах с очень динамичным распределением/освобождением памяти, так как такты проверки объектов сборщиком сильно растянуты по времени. Он может просто "проглазеть" появление неадресованного обьекта.

А автоматически сборщик запускается, только если памяти ну совсем становиться в обрез.

kia007 09.12.2008 21:06

Код AS3:

var str:String = "";
try
{
        for (var i:int = 0; i < list.length; i++)
        {
                str += "<font color='#521017'>[" + list[i].Level + "]</span> <a href='event:" + list[i].Username + "'>" +
                                                list[i].UsernameHtml(true) +"</a>" + " (<b><a href='" + m_hostName +
                                                list[i].PlayerLink + "'
class='style2' target='_blank'>i</a></b>)" + "<br>";
        }
}
catch(_e:Error)
{
}
m_comp.TextfieldUsersList.htmlText = str;
m_comp.ScrollBar2.update();
m_comp.ScrollBar2.scrollPosition = m_chat_s.ScrollBar2.scrollPosition;
 
str = null;

Я просто фигею если оставить так то память растет, если закомментировать try catch то не растет....в чем прикол?

Firexel 09.12.2008 22:10

А вы уверены, что в try не срабатывает никаких эксепшенов?

kia007 10.12.2008 12:02

срабатывают.
но что при этом вы памяти то остается?

Вообщем так и непонятно почему из за try catch память сжиралась...


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

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