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

i.o. 28.04.2010 01:20

GC умеет дефрагментировать память? Где об этом можно подробнее узнать?

wvxvw 28.04.2010 01:29

Нет, это не задача GC, но эти процессы не могуть быть не связаны, т.как если GC высвобождает память, то если у нас все объекты не одинакового размера, то рано или поздно наступит момент, когда количество "дырок" т.е. неиспользуемых участков памяти будет очень большим. Легче всего это представить, как тетрис :) GC это когда вы заполнили ряд, a фрагментация, это когда в ряду остались "дырки".
Я чесно не знаю, как именно флеш дефрагментирует свою память, но если бы он этого не делал вообще, то любая флешка запущенная долгое время отъедала бы все больше и больше ресурсов. И в итоге флеш не любили бы еще больше :)

BlooDHounD 28.04.2010 01:33

wvxvw, а зачем делать то, что ты описываешь? есть специальные блоки памяти, под разные объекты. локальные переменные хранить не надо. и у удалять не особо надо. можно поверх писать и не парится. всё равно к ним повторного обращения не будет.

Добавлено через 2 минуты
это блоки довольно большие кстати. оченб большие. и динамически выделяются постоянно. чистить их нет смысла, ибо если один раз засрались, то существует вероятность, что и второй раз засруться. действия в приложении в основном циклические.

Добавлено через 3 минуты
именно поэтому, кстати, наблюдается постепенный рост используемой памяти.

wvxvw 28.04.2010 02:53

Я вообще про другое...
Т.как я не особо силен в этом вопросе, и то, как именно плеер распоряжается своей памятью покрыто мраком, я бы наверное почитал вот это:
http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
Скажем так, вряд ли человечество придумало что-то радикально новое и не похожее. Возможно, что в плеере эти проблемы решаются по-другому, но они все-равно должны как то решаться. Можно еще погуглить про Яву молодое поколение vs старшее поколение, в Яве как-то этот вопрос более освещен, потому что на ней есть много серверов, где за память нужно очень усердно бороться :)

Если наблюдается постоянный рост памяти - то это плохо :( Но, как бы это по-моему не впервой такое с плеером... как бы не привыкать.

BlooDHounD 28.04.2010 03:39

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

wvxvw 28.04.2010 05:23

Нет, локальные переменные как раз не могут к ним относится - почитай статью, там все хорошо расписано, локальные переменные, это как раз одни из "корневых" ссылок от которых начинается отсчет других ссылок.
Если бы это было не так, то ты бы просто ничего не смог написать вообще, как только первая запущенная функция (конструктор документ класса) отработала бы, на этом вся твоя програма и закончилась бы.

Цитата:

Every application has a set of roots. Roots identify storage locations, which refer to objects on the managed heap or to objects that are set to null. For example, all the global and static object pointers in an application are considered part of the application's roots. In addition, any local variable/parameter object pointers on a thread's stack are considered part of the application's roots. Finally, any CPU registers containing pointers to objects in the managed heap are also considered part of the application's roots. The list of active roots is maintained by the just-in-time (JIT) compiler and common language runtime, and is made accessible to the garbage collector's algorithm.
Смотри, я не говорю, что у нас должно быть один-в-один с .NET, но по духу и по принципу работы AVMPlus это игрушечная копия CLR, т.е. скорее всего, что у нас все проще, и финализация не имеет к нам никакого отношения, но принципиально должно быть похоже. В Яве примерно тоже так...

BlooDHounD 28.04.2010 11:51

не, меня не хватит на столько английского за раз. но из твоего абзаца ничего не ясно. и не ясно зачем локальным переменным быть корнем приложения. спорить о прозрачности воздуха мне надоело, так, что давай закруглимся. то есть я пониманию, что ты хотел донести до меня, но моё сознание пока не готово принять всё за чистую монету.


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

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