Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Утечка памяти при загрузке DLL [D7, Win2k, WinXP]


bjohny ©   (2004-08-26 13:26:00) 

Привет. Проблема в следующем.
Создаю пустую DLL, определяю и экспортирую пустую процедуру.
В проекте DLL загружается динамически. Послу загрузки сразу же выгружаю.
LoadLibrary(...);
FreeLibrary(...);
MemProof говорит что утечки нет, но Task Manager показывает утечку.Если запустить в цикле загрузку/выгрузку на несколько часов, то кушается вся память.
Подскажите почему растет память????


Digitman   (2004-08-27 11:37:00) [1]


> bjohny   (27.08.04 10:59) [19]


> ну так глянь


даже и глядеть нечего


bjohny   (2004-08-27 10:59:00) [2]

ну так глянь


Digitman   (2004-08-27 10:42:00) [3]


> bjohny   (27.08.04 10:30) [17]
> Суть то остается одной...


да, суть остается одной - не верю чтобы "пустая" ДЛЛ вызывала проблемы с утечками памяти


bjohny   (2004-08-27 10:30:00) [4]

Суть то остается одной...


Digitman   (2004-08-27 10:18:00) [5]


> bjohny   (27.08.04 09:46) [15]


> Реально DLL использует WMIScripting, который в свою очередь
> использует OLE


вот и приводи РЕАЛЬНЫЙ код, а не абстрактный пример


bjohny   (2004-08-27 09:46:00) [6]

Реально DLL использует WMIScripting, который в свою очередь использует OLE. Память течет по страшному. Убрать WMI??? Это не выход...


Игорь Шевченко   (2004-08-26 17:59:00) [7]


> Меня интересует как от этого избавиться


Сказали уже - убрать Forms.


bjohny   (2004-08-26 15:49:00) [8]

НУ хорошо, эт в общем.
Возьмем OLE, там тоже дует будь здоров.
Меня интересует как от этого избавиться, пусть хоть мильон действий производится.


Игорь Шевченко   (2004-08-26 15:46:00) [9]

А зачем грузить такую DLL ?

При инициализации forms очень много действий производится...


bjohny   (2004-08-26 15:05:00) [10]

В бесконечном цикле такая же беда.


clickmaker   (2004-08-26 14:54:00) [11]


> [8] bjohny   (26.08.04 14:41)

а если без таймера, просто в бесконечном цикле?


DVM   (2004-08-26 14:52:00) [12]


> а вот если  Classes или Forms то ... утечка...

Ну вот и ответ. Там искать надо.


bjohny   (2004-08-26 14:41:00) [13]

Ну и что.... убрал все равно...


VMcL   (2004-08-26 14:38:00) [14]

> Application.ProcessMessages;

Убрать.


bjohny   (2004-08-26 14:38:00) [15]

Если оставить  SysUtils, то все нормально, а вот если  Classes или Forms то ... утечка...


DVM   (2004-08-26 14:20:00) [16]

А если убрать
uses
SysUtils,
Forms,
Classes;
ситуация не меняется?


bjohny   (2004-08-26 14:02:00) [17]

Dll:
library Test;

uses
 SysUtils,
 Forms,
 Classes;

{$R *.res}
procedure tt;
begin
//
end;

exports
tt;
begin
end.


Проект:
// Timer.Interval:=10;
procedure TForm1.Timer1Timer(Sender: TObject);
var DllH:HWND;
begin
 DllH:=LoadLibrary('Test');
 FreeLibrary(DllH);
 Application.ProcessMessages;
end;


DVM   (2004-08-26 13:46:00) [18]


> если бы винда не говорила что You virtual memory is LOW

код давай...


bjohny   (2004-08-26 13:39:00) [19]

Я бы ему не верил, если бы винда не говорила что You virtual memory is LOW


DVM   (2004-08-26 13:35:00) [20]


> но Task Manager показывает утечку

Не верь таскменеджеру. Верь MemProofу. Еще можно ProcessExplorer-у.


Наверх

Титульная страница Поиск, карта сайта Написать письмо