Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизКуда девается памаять? Найти похожие ветки
← →
ZENsan © (2008-04-25 12:50) [0]Подскажите с проблемой...все работает, но не очень хорошо.. что я не так делаю - почему память занимаемая процессом растёт в арифметической прогрессии...
program ProjectА;
{$APPTYPE CONSOLE}
uses
Forms,
ActiveX,
OleCtrls,
SHDocVw;
var
Web: TWebBrowser;
i: Integer;
frm: TForm;
begin
Application.Initialize;
CoInitialize(nil);
i := 0;
frm := TForm.Create(nil);
frm.Visible := False;
repeat
Web := TWebBrowser.Create(nil);
Web.ParentWindow := frm.Handle;
Web.Visible := False;
Web.Hide;
Application.ProcessMessages;
Web.HandleNeeded;
Web.Navigate("http://www.google.ru");
repeat
Application.ProcessMessages;
until Web.ReadyState = READYSTATE_COMPLETE;
Web.Free;
i := i + 1;
WriteLn(i);
until i = 100;
frm.Free;
end.
← →
sniknik © (2008-04-25 12:57) [1]Application.ProcessMessages; как и весь Application сдесь лишние.
← →
sniknik © (2008-04-25 13:02) [2]+
в консольных приложениях если нужен цикл выборки сообщений то его прям там и пишут.
← →
ZENsan © (2008-04-25 13:04) [3]Эсли не писать это, то просто ничего на пашет. браузер не успевает загрузить страницу вообще.
← →
ZENsan © (2008-04-25 13:05) [4]Формс и Аппликатион обйекты мне нужны, они это реализуют - зачем?
Но суть-то вопроса - куда память уходит?
← →
ZENsan © (2008-04-25 13:06) [5]Косоль здесь только для дебага.. чтобы выводить i
← →
ZENsan © (2008-04-25 13:07) [6]Я пробовал и в приложении форм это делать... тоже памаять только прибывает и прибывает... и никуда не освобождается..
← →
ZENsan © (2008-04-25 13:09) [7]Это же не мой объект TWebBrowser.. как я там обработку сообшений напишу?
Я просто даже по другому не умею..
← →
sniknik © (2008-04-25 13:14) [8]> браузер не успевает загрузить страницу вообще.
sleep-а в цикле должно хватить.
> Это же не мой объект TWebBrowser.. как я там обработку сообшений напишу?
в нем и не надо. кстати это ole-контрол, т.е. обертка над активх обьектом, который стартует но не завершается (сам обьект, а не обертка) вот отсюда наверняка и утечка.
← →
Ega23 © (2008-04-25 13:15) [9]1. Не вижу ни одного try..except и try..finally.
2. А что ты вообще делаешь?
← →
Ega23 © (2008-04-25 13:16) [10]
Web.Free;
Web := nil;
?
← →
sniknik © (2008-04-25 13:17) [11]> sleep-а в цикле должно хватить.
сам проверить не могу, у нас сеть с прокси, может от этого, может нет, но у меня статуса READY не получает вообще, т.е. вешается (разбираться с что ему там нужно не хочется).
← →
ZENsan © (2008-04-25 13:19) [12]Слееп не идет, попробовал.. Не загружает..
> 2. А что ты вообще делаешь?
Просто прога бровсит адреса например. И при этом занимаемая ею память только приростает и не убывает никогда...
← →
ZENsan © (2008-04-25 13:20) [13]Эта прога просто пример, который ведёт себя подобным образом..
Может я неверно как-то создаю чего-то... или ещё что. Вы же меня знаете :)
← →
sniknik © (2008-04-25 13:20) [14]> Web.Free;
> Web := nil;
> ?
скорееWeb.Close/Quit/Stop/ чтото подобное.
Web.Free;
← →
ZENsan © (2008-04-25 13:22) [15]Да, пробовал... но на Web.Quit; вообще выдаёт Unspecified error. Этот quit, наверное надо вызывать когда ready_state не completed.
← →
ZENsan © (2008-04-25 13:24) [16]Во! Stop... Память хотя и нарастает, но теперь в 10 раз медленнее...
где-то по 100 Кб на 100 navigate...
← →
ZENsan © (2008-04-25 13:26) [17]Спасибо sniksnik, мне просто в голово не могло придти, что надо СТОП вызывать, когда статус законченный... Но памаять куда-то всё равно просачивается..
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c