Главная страница
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.077 c
15-1163658451
AntiUser
2006-11-16 09:27
2006.12.03
Что вы можете сказать о такой вакансии?


2-1163580289
Делфи
2006-11-15 11:44
2006.12.03
плейлист


15-1163355784
razor
2006-11-12 21:23
2006.12.03
Футболка с надписью, логотипом ACM


9-1139390181
Creative
2006-02-08 12:16
2006.12.03
Save/Load


2-1163664385
неумейка
2006-11-16 11:06
2006.12.03
Фон StringGrig с перетеканием цвета