УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Утечка памяти в браузере при WebVision


Автор Сообщение
Сообщение создано: 22. 03. 2013 [18:17]
barsuk73
Василий Барсуков
Создатель темы
Зарегистрирован(а) с: 22.03.2013
Сообщения: 5
При просмотре проекта через web браузер, браузер кушает память. Пробывал с 0.8.0.3/5, в chrome и firefox ситуация одинаковая.
В той версии, что на сайте на главной странице (http://oscada.org:10002/WebVision/ses_AGLKS0/), тоже самое.
Это как-нибудь исправляется?
Сообщение создано: 22. 03. 2013 [18:56]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"barsuk73" wrote:

При просмотре проекта через web браузер, браузер кушает память. Пробывал с 0.8.0.3/5, в chrome и firefox ситуация одинаковая.
В той версии, что на сайте на главной странице (http://oscada.org:10002/WebVision/ses_AGLKS0/), тоже самое.
Это как-нибудь исправляется?

Нет. Природа у них такая при работе с динамикой.
Хотя лично у меня они не текут, да съедают мегабайт по 150, но затем всё более или менее стабилизируется.

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2013 [20:55]
barsuk73
Василий Барсуков
Создатель темы
Зарегистрирован(а) с: 22.03.2013
Сообщения: 5
На объекте браузер оттяпал под гиг, точно не скажу за какое время, но больше чем за сутки - у людей желание перевести браузер в киоск моде и так оставить пожизненно.

Есть 2 решения проблемы:
1. В скрипт добавляется reload каждые N часов.
2. Попробывать разобраться где утекает, т.к. хром показывает утечку в замыканиях JS (хотя могу ошибаться, по JS я точно не специалист).

Думаю, придется прибегнуть к обоим вариантам.

"roman" wrote:

Хотя лично у меня они не текут, да съедают мегабайт по 150, но затем всё более или менее стабилизируется.


150 мб это даже если страница пару дней висит без перезагрузок?
Сообщение создано: 22. 03. 2013 [21:09]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"barsuk73" wrote:

На объекте браузер оттяпал под гиг, точно не скажу за какое время, но больше чем за сутки - у людей желание перевести браузер в киоск моде и так оставить пожизненно.

Браузер и режим киоска, с круглосуточной работой, это не реально и UI.WebVision никогда для этого не позиционировался.

"barsuk73" wrote:

2. Попробывать разобраться где утекает, т.к. хром показывает утечку в замыканиях JS (хотя могу ошибаться, по JS я точно не специалист).

Кто такие замыкания? Где видно?

"barsuk73" wrote:

Думаю, придется прибегнуть к обоим вариантам.

Поглядите. Я лично явных проблем там не вижу, особенно с общим позиционирование JS на неочевидное выделение памяти и такое-же её освобождение.

"barsuk73" wrote:

150 мб это даже если страница пару дней висит без перезагрузок?

Это вот так:
Время(мин) : Chrom(Мб) : Firefox(Мб)
Запуск : 61 : 148
0 : 54 : 184
10 : 136 : 263
30 : 161 : 366
60 : 193 : 515

P.S. Firefox течёт жутко.

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2013 [21:21]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"barsuk73" wrote:

2. Попробывать разобраться где утекает, т.к. хром показывает утечку в замыканиях JS (хотя могу ошибаться, по JS я точно не специалист).

Похоже это течёт из-за постоянного-динамического обновления изображений, особенно трендов, где для обновления в имени указывается время, а браузер зачем-то сохраняет старые: http://localhost:10002/WebVision/ses_AGLKS/pg_so/pg_2/pg_ggraph/pg_1/wdg_trnd1?com=obj&tm=1878&xSc=1.00&ySc=1.00
Надо разобраться как по другому браузер заставить перегружать изображения, при этом не сохраняя старые.


Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2013 [22:48]
barsuk73
Василий Барсуков
Создатель темы
Зарегистрирован(а) с: 22.03.2013
Сообщения: 5
В хроме меню->инструменты->инструменты разработчика или ctrl+shift+I, далее profiles и несколько раз take heap snapshot.

В snapshot'ах видно что closure растут, это замыкания (пример http://habrahabr.ru/post/146784/)

"roman" wrote:

Браузер и режим киоска, с круглосуточной работой, это не реально и UI.WebVision никогда для этого не позиционировался.


Ну во-первых у меня были какие-то проблемы с разделением на скаду и тонкого QT клиента, во-вторых это одна из хотелок заказчика - чтоб все в браузере было. А сколько было смеха, когда поставили LinPAC 5141 со скадой и запустили браузер...

Если в скриптах что найду, обязательно сообщу, если нет, придется отказываться от браузера.

И еще - есть же сенсорные панели на Андройде (достаточно дешевые китайские), которые можно задействовать для дополнительного управления. Для них WebVision был бы самое то.
Сообщение создано: 23. 03. 2013 [22:06]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"barsuk73" wrote:

В хроме меню->инструменты->инструменты разработчика или ctrl+shift+I, далее profiles и несколько раз take heap snapshot.
В snapshot'ах видно что closure растут, это замыкания (пример http://habrahabr.ru/post/146784/)

Ага. А знаете к чему это сводится? К распуханию массива: this.mousedown и this.mouseup, причём этот массив, в функции makeEl(), создаётся по новой, т.е. очищается. Как только не пробовал его очищать — всёравно пухнет. Просто цирк какой-то. Думаете почему я говорю о том, что Web не место на киосках, в режиме работы 24 часа в сутки, да потому, что подобные баги браузеров я разгребаю с самого начала разработки Web-модулей: http://wiki.oscada.org/Doc/WebCfgD#h810-9

"barsuk73" wrote:

Ну во-первых у меня были какие-то проблемы с разделением на скаду и тонкого QT клиента, во-вторых это одна из хотелок заказчика - чтоб все в браузере было. А сколько было смеха, когда поставили LinPAC 5141 со скадой и запустили браузер...

А что смешного то там?

"barsuk73" wrote:

И еще - есть же сенсорные панели на Андройде (достаточно дешевые китайские), которые можно задействовать для дополнительного управления. Для них WebVision был бы самое то.

Можно нативный-нормальный QT интерфейс OpenSCADA там запустить. Явно желающий в этом пока не было поэтому пока и сборок нет, а мне хоть и нужно, но очень неторопливо.

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 03. 2013 [23:12]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

Ага. А знаете к чему это сводится? К распуханию массива: this.mousedown и this.mouseup, причём этот массив, в функции makeEl(), создаётся по новой, т.е. очищается. Как только не пробовал его очищать — всёравно пухнет.

Это вроде обошёл, нужно было отдельные элементы поудалять — функции.
Сейчас с "кучей памяти" явных проблем нет, да и её утечка тогда не была основной. Завтра выгружу — поглядите.
А основное это накачка браузером динамических изображений и хранение их, можете это увидеть там-же "Resources"->"(localhost)"->"images". Причём он это-же делает для одноимённых изображений, пробовал tm=0 всегда.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 03. 2013 [09:53]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

Это вроде обошёл, нужно было отдельные элементы поудалять — функции.

Не обошёл. Всё равно не очищает массивы с функциями. И как с этим бороться?
Подчищенный JS код и местами с прямым удалением объектов выгрузил.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 03. 2013 [22:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

Не обошёл. Всё равно не очищает массивы с функциями. И как с этим бороться?

Таки проблема была в коде UI.WebVision, а именно в области вызова, т.е. эти массивы не всегда очищались.

Код UI.WebVision полностью переформатировал и исправил обход массивов: this.mousedown и this.mouseup.

В "куче памяти" утечек не видно, хотя в целом некоторая утечка осталась:
Время(мин) : Chrom(Мб) : Firefox(Мб)
Запуск : 58 : 150
0 : 52 : 178
10 : 129 : 188
30 : 136 : 196
60 : 144 : 204

Learn, learn and learn better than work, work and work.



2572