![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 11
|
Мое почтение,
Заранее прошу прощения если что не так оформлено или написано, это мой первый пост. На форумах никогда не писал, обычно читал и анализировал информацию. Но тут дело серьезное, бьюсь над проблемой уже неделю перелопатил не один форум в.т.ч англоязычные результат близкий к нулевому. Итак собственно к сути. Я Разрабатываю приложение для контакта. Некая смесь MMORPG и Шахмат Online (На самом деле приложение уже работает и одобренно администрацией контакта). Приложение достаточно комфортно себя чувствует в браузерах(IE, Opera, Google, Chrom) НО, в Firefox творится что-то невероятное... за 5-6 минут игра съедает процессор под 100% и становится не то что невозможно играть, но даже проблемно закрыть браузер. Сначала я грешил на утечку памяти (memory leaks) перепроверил все ф-ции подчистил все NEW обьекты delet'ом. не помогает... CPU кушается за милую душу После долгих мытарств установил что память не кушается если убрать из всех активных интервалов LoadVariables или LoadVars (Под активными интервалами имею в виду - интервалы отвечающие за сетевое взаимодействие т.е. все время выполняют одну и ту же задачу, например отправляют Alive пакеты на сервер каждую секунду для того чтобы показасть что пользователь онлайн) Т.Е. установил что Firefox начинает подъедать CPU только если происходит частое сетевое взаимодействие (частое: 1 пекет на отправку 4 на получение в секунду) Для проверки создал пустое приложение в него запихнул 2 интервала в каждом интервале написал выполнение 1ого loadvars (с кодом по типу приведенного ниже). за пол часа данный скрипт съел 70% CPU Ниже привожу пример исользуемого мной куска кода с 1им циклом. для примера оформления... может заметите что-то что может грузить CPU или вызывать утечки памяти. //Ф-ция опроса ячейки чата function logsLoaded() { //грузим данные с SQL var chatvar:LoadVars = new LoadVars(); chatvar.load("http://www.site.com/?cmd=get1&game_id="+_global.game_id+"&id=11&f="+_global.battleType+"&time="+getTimer()); chatvar.onLoad = function(success) { // загрузили if (success) { //если есть данные выводим их в окне чата if (chatvar.firstPerson != undefined) { _global.lastcharacter = chatvar.firstPerson; // для того чтобы не выводить повторяющиеся сообщения if (_global.lastcharacter != _global.prelast) { _global.prelast = _global.lastcharacter; _root.chat_txt = "<font color='#000000'><b>DEMO MODE: '"+chatvar.firstPerson+"'</b></font>\n"+_root.chat_txt; //очищаем new delete chatvar; } else { //очищаем new деже если не загр delete chatvar; } } } }; //паранойно чистим все что можно от mem leaks //для того чтобы перебдеть и очистить на всякий случай интервал использую следующую конструкцию delete chatvar; clearInterval(_global.logs_interval); delete _global.logs_interval; _global.logs_interval = setInterval(logsLoaded, 1200); _global.ClearLogsInt =Number (_global.ClearLogsInt+1) ; _root.chat_txt = _global.ClearLogsInt; } // первый запуск ф-ции в цикл _root.logsLoaded(); (СПб). Да что там, готов заплатить если помогут эксперты. |
![]() |
Часовой пояс GMT +4, время: 21:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|