Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

TWebBrowser, IHTMLDocument и утечка памяти   Найти похожие ветки 

 
Percent   (2006-07-29 14:25) [0]

var
 Txt: string;
 Document: IHTMLDocument;
 V: OLEVariant;
 Browser: TWebBrowser;

begin
 // 1
 WebBrowser.Navigate("about:blank");
 while (WebBrowser.Document = nil) do
   Application.ProcessMessages;
 //2
 Txt := "Hallo, world!";
 Document := Browser.Document as IHtmlDocument2;
 V := VarArrayCreate([0, 0], varVariant);
 V[0] := Txt;
 Document.Write(PSafeArray(TVarData(v).VArray));
 Document.Close;
end;


Код (2) вызывает утечку памяти, около нескольких десятков килобайт на одну загрузку. То есть, если динамически создавать WebBrowser, а потом загружать таким образом в него содержимое, то в диспетчере задач наблюдается прогрессирующее увеличение памяти, занимаемой программой. То есть, не "плавание" около какого-то значения, а именно увеличение. Догнал до 50 МБайт, после чего решил остановиться - и так все понятно.

Вот, потому и вопрос: Что сделать, чтобы утечки не было?


 
Percent   (2006-07-29 23:03) [1]

То есть, ни у кого никаких соображений?


 
Percent   (2006-07-30 02:45) [2]

М-да... нашел решение. Странное такое решение.

...
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
Document._Release;


То есть, вот такое "принудительное" декрементирование.
Почему - не понимаю. Ведь Document - локальная переменная. Уменьшение счетчика ссылок должно произойти автоматически, при выходе за пределы видимости переменной, т.е., при выходе из метода. Но... дудки! Даже принудительное Document := nil не помогало (что, впрочем, имеет естественное объяснение). Интересно, "кто" "застолбил" интерфейсную ссылку?


 
Плохиш ©   (2006-07-31 11:28) [3]


> Percent   (29.07.06 14:25)  

Не ври нам, на строке

>  Document := Browser.Document as IHtmlDocument2;

происходит ошибка доступа к памяти, т.к. переменная Browser не инициализирована.



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
15-1155573637
qqqqqqq
2006-08-14 20:40
2006.09.10
Кто разбирается в ОС (Unix,Linux)? Какой Linux посоветуете?


2-1156316954
иван8511
2006-08-23 11:09
2006.09.10
Вывод строки на матричный принтер.


2-1156259071
Sele
2006-08-22 19:04
2006.09.10
tcpclient + server


3-1151485479
Бульбаш
2006-06-28 13:04
2006.09.10
Переполнение стека


2-1155842084
Denisich
2006-08-17 23:14
2006.09.10
Ошибка в rtl60.bpl