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

Вниз

странная утечка памяти   Найти похожие ветки 

 
Venkin   (2008-02-01 01:28) [0]

имеем: свежеустановленную  D 2007 ( в комплекте - Indy), windows xp SP2, fastmm4.
новый проект, на форму ложим idhttp1 компоненту, подключаем fastmm4, запускаем проект.
закрываем окно -- получаем сообщение об утечке:

В этом приложении происходят утечки памяти. Утечки блоков маленького размера (исключая ожидаемые утечки зарегистрированные по указателю):

5 - 12 байт: TIdThreadSafeInteger x 1
21 - 28 байт: TIdCriticalSection x 2


заметьте, никаких событий и действий в проекте не делал, только положил компоненту на форму и все.
убрал компоненту idhttp1, убрал все связанное с ней из uses, запустил проект, закрыл окно - никаких утечек нет.
что это такое?


 
sniknik ©   (2008-02-01 08:22) [1]

если Indy десятый то там есть глюк (а может и не один), после коннекта, хотя бы одного установленного соединения при завершении программы (закрытии соединения) ошибка прерванной процедуры (чтото типа...).
может они и не связанные, но вполне можно предположить что если чтото прерывается (особенно поток), а не завершается нормально... могут быть утечки. ошибка видно только при запуске из под дельфей (там пустой try except, хотя и с длинным пояснением почему и когда считать что можно игнорировать... но все таки).

в общем посмотри, может быть связано
http://delphimaster.net/view/6-1189799328/

> заметьте, никаких событий и действий в проекте не делал
ты не делал, он (сам компонент) делал - организовал слушающий поток, цикл в нем (execute)...


 
Venkin   (2008-02-01 11:44) [2]

с Indy это не связано походу.
сейчас проверил на rxLib 2.75 и дельфи 7 --
утечки по прежнему идут в компонентах: RXGifanimator, RXFormStorage.
есть идеи?


 
ketmar ©   (2008-02-01 12:25) [3]

конечно. люди не озадачиваются освобождением ресурсов — оставляют эту задачу ОС.


 
Palladin ©   (2008-02-01 12:28) [4]


> Venkin   (01.02.08 01:28)

ты даже не представляешь какой толмут ликов выдается при использовании DevExpress...


 
Venkin   (2008-02-01 12:48) [5]

другими словами, вы хотите сказать, -- не обращать внимания на утечки памяти, оставить все как есть? как же так, это ведь не правильно...


 
ketmar ©   (2008-02-01 13:00) [6]

>[4] Palladin ©(01.02.08 12:28)
тык чтобы использовать DevExpress — это очень экстремально альтернативным надо быть…


 
homm ©   (2008-02-01 13:27) [7]

> [5] Venkin   (01.02.08 12:48)
> другими словами, вы хотите сказать, -- не обращать внимания
> на утечки памяти, оставить все как есть?

Не используй эти компоненты, или дорабатывай вручную


 
Loginov Dmitry ©   (2008-02-01 22:27) [8]

> другими словами, вы хотите сказать, -- не обращать внимания
> на утечки памяти, оставить все как есть? как же так, это
> ведь не правильно...


Не правильно - это когда ты вызываешь много раз одну и ту же процедуру, в которой выделяется кусок памяти, освобождение которой не делается. Рано или поздно это может привести к реальным сложностям в работе программы. А то, что не осбовождаются глобальные объекты - не беда. Винда очистит все ресурсы самостоятельно. Хотя можно огрести проблемы и с глобальными объектами, если они размещены в DLL, которая тыщу раз загружается и выгружается (но это скорее исключение - так с DLL-ками обычно не работают)


 
Venkin   (2008-02-01 22:43) [9]

окей, тогда перейдем к практике :)
как считаете, этот код корректен по отношению к памяти? в том смысле, что не останутся ли тут утечки?

//глобальные переменные
var
 Disp: IDispatch;
 CurrentWB: IWebBrowser;
 Editor: IHTMLDocument2;
 Range: IHTMLTxtRange;
 s1: string;

implementation

procedure TForm1.Webbrowser1DocumentComplete(Sender: TObject;  const pDisp: IDispatch; var URL: OleVariant);
begin
Disp := pDisp;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
s1 := concat("about:"<head>", #10#13, "</head>","<body>", "</body>");
Webbrowser1.Navigate(s1);
end;

procedure TForm1.ButtonBoldClick(Sender: TObject);
begin
if  editor.selection.type_ = "Text" then begin
Range := (editor.selection.createRange as IHTMLTxtRange);
Range.execCommand("bold", false, emptyparam);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
// это событие по идее должно быть вызвано перед
// всеми другими, но после загрузки страницы. может его на таймер повесить...?
begin
CurrentWB := Disp as IWebBrowser;
editor := (CurrentWB.Document as IHTMLDocument2);
end;

initialization
OleInitialize(nil);

finalization
OleUninitialize;

end.


 
homm ©   (2008-02-01 22:46) [10]

> procedure TForm1.FormCreate(Sender: TObject);
> begin
> s1 := concat("about:"<head>", #10#13, "</head>","<body>",
> "</body>");

Это как?


 
DrPass ©   (2008-02-01 23:51) [11]


> Venkin   (01.02.08 12:48) [5]
> другими словами, вы хотите сказать, -- не обращать внимания
> на утечки памяти, оставить все как есть? как же так, это
> ведь не правильно...

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


 
Venkin   (2008-02-02 00:12) [12]


> Это как?

s1 := concat("about:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">",  #10#13,
"<head>", #10#13, "<meta http-equiv="Content-Type" content="text/html; charset=unicode">", #10#13, "</head>","<body>", "</body>");


это непринципияльно, мне важно знать, верно ли построение событий в коде [9].
почему-то сразу при запуске программа ловит AV... :(


> Если программа во время работы забывает корректно освободить
> два блока по 28 байт, на это можно закрыть глаза, чесслово


просто я смотрю ProcessExplorer-ом, она  открывает несколько тредов и постоянно растет счетчик I/O (Other)
http://i016.radikal.ru/0802/18/efcb9fbf9a55.jpg


 
Johnmen ©   (2008-02-03 02:48) [13]


> просто я смотрю ProcessExplorer-ом, она  открывает несколько
> тредов и постоянно растет счетчик I/O (Other)http://i016.
> radikal.ru/0802/18/efcb9fbf9a55.jpg

И чего?


 
Venkin   (2008-02-03 11:16) [14]


> И чего?


хм, наверно ничего страшного, посмотрел у штатного IE тоже счетчик растет :)
окей, всем спасибо ! :)



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
2-1222216922
Lamer6666
2008-09-24 04:42
2008.11.02
Zeos+MySQL


15-1220629849
Slider007
2008-09-05 19:50
2008.11.02
С днем рождения ! 5 сентября 2008 пятница


1-1201163795
mix
2008-01-24 11:36
2008.11.02
Изменение события OnClick у TButton


2-1222028467
programmer90
2008-09-22 00:21
2008.11.02
Проблема с маской


2-1222338232
Дева
2008-09-25 14:23
2008.11.02
каталог запуска программы