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

Вниз

Рост памяти с TWebBrowser   Найти похожие ветки 

 
dmitry kholl   (2006-10-23 13:11) [0]

Я в рантайме креирую компонент браузера.

var
 Document: IHTMLDocument2;
 V: OleVariant;
//...

 ABrowser:= TWebBrowser.Create(AParent);
 ABrowser.ParentWindow := AParent.Handle;
 ABrowser.Width := AParent.Width;
 ABrowser.Height := AParent.Height;
 ABrowser.Align := alClient;

 ABrowser.Navigate("about:blank");

 while (ABrowser.Document = nil) do;

 Document := ABrowser.Document as IHtmlDocument2;
 V := VarArrayCreate([0, 0], varVariant);

 V[0] := "BLA-BLA-BLA";

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


Код удаления компонента.

 if ABrowser <> nil
 then FreeAndNil(ABrowser);


Провожу серию созданий и удалений компонента.
При первом создании память резко выростает - создается компонент первый раз, и при удалении не освобождается эта память.
При повторном создании такого резкого скачка уже нет, но после метода
Navigate память выростает и по немногу не освобождается.

Как добиться нормального освобождения памяти?


 
Dmitrij_K   (2006-10-23 13:24) [1]

try
 xxx.Create
finally
 xxx.Free
end



> Как добиться нормального освобождения памяти?

ты уверен что память не освобождается?


 
dmitry kholl   (2006-10-23 14:32) [2]

> ты уверен что память не освобождается?

Я просто привел пример кода, которым я создаю и разрушаю.

Free точно вызывается.


 
dmitry kholl   (2006-10-23 14:38) [3]

Если убрать ABrowser.Navigate("about:blank");
ну и соответсвенно код загрузки, то память только при первом создании занимается, но нет небольшого прироста памяти при следующих созданиях и разрушениях компонента.


 
Gero ©   (2006-10-23 14:52) [4]

>
> Код удаления компонента.
>
> if ABrowser <> nil
> then FreeAndNil(ABrowser);

А где ты его вызываешь?


 
dmitry kholl   (2006-10-23 15:11) [5]

Для того что бы разобраться с этой проблеммой, в большом проэкте это серьезная уже утечка памяти, я сделал тестовый пример.

На форме две кнопки:
 1 - создает и загружает компонент
 2 - разрушает его.

Как тестировал.
 Ручками нажимаю, то на одну, то на вторую. Записываю показания памяти для процесса программы.
До создания компонента   После его создания
//первый значительны прирост памяти при первом создании
3440                     8904
// последующий рост (первый столбик -это после разрущения компонента)
8844                     8956
8864                     9004
8916                     9040
8972                     9076



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

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

Наверх




Память: 0.48 MB
Время: 0.046 c
15-1163166355
paneller
2006-11-10 16:45
2006.12.03
Layout контролов


4-1153296669
Интересующийся
2006-07-19 12:11
2006.12.03
Два вопроса о региональных стандартах


3-1159717928
bugorik
2006-10-01 19:52
2006.12.03
Как поместить результат SQL запроса в Combobox ?


15-1163402608
vidiv
2006-11-13 10:23
2006.12.03
Посоветуйте счетчик (кроме hotlog)


3-1159693344
Antoxa2005
2006-10-01 13:02
2006.12.03
Подскажите, как программно "сжать" базу данных FB?