Большие утечки памяти :(
От: Darkman_CV Россия  
Дата: 17.09.06 10:46
Оценка:
Имеется WinForm Application, состоящая только из одного WebBrowser control'a.
Контрол постоянно общается с хостером (WinForm'a) через window.external (передаются объекты .NET'a в JavaScript)

Где-то в этом всём есть большие утечки памяти (до 1Мб в минуту).

Как с этим можно бороться и откуда вообще утечки, если и в .NET'e и в JavaScript'e свои GC?
Re: Большие утечки памяти :(
От: Mika Soukhov Stock#
Дата: 17.09.06 11:03
Оценка:
Здравствуйте, Darkman_CV, Вы писали:

D_C>Имеется WinForm Application, состоящая только из одного WebBrowser control'a.

D_C>Контрол постоянно общается с хостером (WinForm'a) через window.external (передаются объекты .NET'a в JavaScript)

D_C>Где-то в этом всём есть большие утечки памяти (до 1Мб в минуту).


Разве это большие. За 2 часа отъедается около 100 метров. У меня IE за это время весит порядка 300-400 мегабайт.

D_C>Как с этим можно бороться и откуда вообще утечки, если и в .NET'e и в JavaScript'e свои GC?


WebBrowser — это COM реализация. Да и JS не идеален http://www.quirksmode.org/blog/archives/2005/02/javascript_memo.html
Re: Большие утечки памяти :(
От: TK Лес кывт.рф
Дата: 17.09.06 11:07
Оценка:
Здравствуйте, Darkman_CV, Вы писали:

D_C>Как с этим можно бороться и откуда вообще утечки, если и в .NET'e и в JavaScript'e свои GC?


Для начала надо определиться с тем что именно утекает. После этого уже можно будет думать над тем как с этим можно бороться.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Большие утечки памяти :(
От: Darkman_CV Россия  
Дата: 17.09.06 13:44
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Darkman_CV, Вы писали:


D_C>>Как с этим можно бороться и откуда вообще утечки, если и в .NET'e и в JavaScript'e свои GC?


TK>Для начала надо определиться с тем что именно утекает. После этого уже можно будет думать над тем как с этим можно бороться.


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

Наблюдения показывают, что после вызова WebBrowser::Navigate количество используемой памяти резко уменьшается, а на новой странице она опять "утекает".

На каждой странице существует Javascript Objects. Для понимания проблемы, объясню на пальцах (кода под рукой нет).

Объект "транспорт": имеет учередь "сообщений", отправляемых через AJAX
(это необходимо для синхронной отправки сообщений)

Выглядит так:
var queue = new Array();
queue.push(new StateReport());

далее, по таймеру очередь проверяется и отправляется.

Объект StateReport() — это объект, который сам сеарилируется в XML.

Некоторые данные получает через window.external.getValueOne(), некоторые из состояний объектов на странице.

Грешу именно на JS т.к. переход со страницу на страницу — вызывает освобождение памяти.

Куда и как покать?
Re[2]: Большие утечки памяти :(
От: Аноним  
Дата: 17.09.06 14:13
Оценка: -2
Нда... рсдн...

Мне вот интересно, насколько надо иметь "большой ум" (типа, "от большого ума"), чтобы наворотить такого архитектурного Франкенштейна? Тут тебе и JS, AJAX, WebNavigator и... WinForms!...

А потом еще удивляются "и шо у меня тут такое?".

Не-е, это диагноз.

Помять у тебя освобождается при переходе из-за того, что наконец-то наступает тот счастливый момент, когда уже можно удалить всю ту JS/AJAX/XML-байду, которую ты туда напихал. Это никакие не "утечки памяти", а нерациональное ее использование и неправильное использование технологий вообще. Сериализация вообще воздуха не озонирует в плане использования памяти. AJAX тоже. Чего ты хочешь, если при использовании XML объем "сопроводиловки" каждого байта составляет дясятки-сотни РАЗ от "полезной информации".

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

Плодите Франкенштейнов дальше!...

How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?

| Мой Brainbench | BookReader 1.1 | Wallpaper Cycler |


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Большие утечки памяти :(
От: Аноним  
Дата: 17.09.06 23:51
Оценка:
JS/AJAX/XML - обойдусь без слов, но вы поняли, что я подумал об этом
--------------
Любое удобство идет за счет мегагерцеф! : {<b>1</b>, <b>2</b>, <b>3</b>}


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Мдя...
От: Darkman_CV Россия  
Дата: 24.09.06 20:43
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>JS/AJAX/XML - обойдусь без слов, но вы поняли, что я подумал об этом


Спасибо за содержательный ответ
Re[3]: Большие утечки памяти :(
От: Lloyd Россия  
Дата: 24.09.06 20:55
Оценка:
Здравствуйте, BlackTigerAP, Вы писали:

BTA>JS в броузере не умеет освобождать ресурсы, потому всё то барахло, которое ты насовал туда, там и хранится до того "благословенного момента", когда броузер уходит с того адреса и всё становится, наконец-то, никому ненужным.


Вы ошибаетесь. А java-script-е есть сборка "неиспользуемых" объектов.

BTA>Плодите Франкенштейнов дальше!...


BTA>
[i]данное сообщение получено с www.gotdotnet.ru


Это не оправдание!
Re[4]: Мдя...
От: Andrbig  
Дата: 25.09.06 06:33
Оценка:
Здравствуйте, Darkman_CV, Вы писали:

D_C>Здравствуйте, Nimnul, Вы писали:


N>>JS/AJAX/XML - обойдусь без слов, но вы поняли, что я подумал об этом


D_C>Спасибо за содержательный ответ


Ты недавно на рсдн? Почитай посты г-на Nimnul и для тебя подобные его "ответы" перестанут быть неожиданностью. Если же научишься не отвечать на его провокации, а потом — даже не читать, то получишь от форума кроме трепа еще и пользу.

Что же до проблемы, могу предложить отделить мух от котлет и погонять по отдельности составные части на предмет памяти. Я лично не удивлючсь, если IE что-то освобождает только при переходе со страница на страницу — может он расчитан не на AJAX, а на стандарное обновление страниц.

Отладишь кусок с WebBrowser-ом, потом подключай его к WinForm-ам и разбирайся с их сюрпризами. Вот так пошагово есть шанс найти причину.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.