Главная страница
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.108 c
2-1163535181
DoktorX
2006-11-14 23:13
2006.12.03
А вы не могли бы мне подсказать как сравнить по пикселам два ч/б


15-1162911202
SkySpeed
2006-11-07 17:53
2006.12.03
Как в Excel построить следующую поверхность функции:x*x+y*y+z*z=1


15-1163136696
DelphiN!
2006-11-10 08:31
2006.12.03
Сегодня начальство попросило написать свою OC


2-1163628508
Kostafey
2006-11-16 01:08
2006.12.03
Параметры в запросе


2-1163197263
superlamer
2006-11-11 01:21
2006.12.03
Как правильно удалить объект созданный в рантайме