Имя: Пароль:
1C
1С v8
Освобождение памяти при работе с ПолеHTMLДокумента
0 nemoxp
 
01.08.13
20:26
Есть необходимость программно, в цикле формировать HTML документ со скриптами и для его компиляции загружать в ПолеHTMLДокумента (чтобы получить чистый хтмл документ с результатами выполнения скриптов). Далее я получаю результирующий текст HTML и нахожу в нем нужный результат.

Проблема в том, что при постоянной загрузке HTML отнимается оперативка, 100 таких обновлений и 3 Гб как не было. Память не освобождается. Пробовал после каждого цикла писать ПолеHTMLДокумента.Документ.clear() и ПолеHTMLДокумента.Документ.location....(что-то там).... = "about:blank"

Не помогает. Стандартных методов не нашел. Пишут что в 1с нет "сборщика мусора", что типа нельзя память освобождать. Должно быть альтернативное решение, раз так. Надеюсь на помощь.
1 H A D G E H O G s
 
01.08.13
21:02
Нууу., неурожай.
Вот щас пишу приблуду, чтобы 5 меговые jpeg файлеги 100500 раз отображать и печатать прямо из 1С, а то и с ними херня.
В рамках Нетленки 3.0.

Она возрождается из пепла!
2 Asmody
 
01.08.13
21:10
(0) прикрути node.js для своих скриптов и не мучай 1Ску
3 shurikvz
 
01.08.13
23:12
(0) Не сборщика мусора нет, а методов управления сборщиком мусора. Но даже если бы и были - это бы не помогло. Если я правильно понял о чем речь (и это тот же случай), то да, действительно, есть такой глюк WebBrowser, как жор памяти при навигации по ссылкам.

На c# мне помогла простейшая вещь из двух строк:
-------
WebBrowser.Reload(); //Да, тупо просто обновить текущую страницу
GC.Collect();
-------

У поляhtmlдокумента метода Refresh() вроде нет, возможно это будет что-то вроде: v8: Обновление ПолеHTMLдокумента , ну а на  сборщик мусора забить.

Или еще вариант - попробовать использовать "InternetExplorer.Application"
4 nemoxp
 
02.08.13
00:38
Те кто подключался через КОМ (InternetExplorer.Application) говорят что та же фигня. Читал, советовался, говорят что пытаться очистить память в 1с бесполезно.Это все же предметно ориентированный язык и до полноценного объектно-ориентированного языка ему еще далеко. Хотя, КОМ может спасти. Если все будет происходить в отдельном процессе, то его можно будет убивать раз в определенное время и освобождать память. Как например при работе с Эксел метод Close().