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

Вниз

Утечка памяти при загрузке DLL   Найти похожие ветки 

 
bjohny   (2004-08-26 13:26) [0]

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


 
DVM ©   (2004-08-26 13:35) [1]


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

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


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

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


 
DVM ©   (2004-08-26 13:46) [3]


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

код давай...


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

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 14:20) [5]

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


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

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


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

>Application.ProcessMessages;

Убрать.


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

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


 
DVM ©   (2004-08-26 14:52) [9]


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

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


 
clickmaker ©   (2004-08-26 14:54) [10]


> [8] bjohny   (26.08.04 14:41)

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


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

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


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

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

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


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

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


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


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


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


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

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


 
Digitman ©   (2004-08-27 10:18) [16]


> bjohny   (27.08.04 09:46) [15]


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


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


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

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


 
Digitman ©   (2004-08-27 10:42) [18]


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


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


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

ну так глянь


 
Digitman ©   (2004-08-27 11:37) [20]


> bjohny   (27.08.04 10:59) [19]


> ну так глянь


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



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

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

Наверх




Память: 0.51 MB
Время: 0.05 c
8-1088850562
Dominus
2004-07-03 14:29
2004.10.03
Redo в Memo


14-1095197863
SkyRanger
2004-09-15 01:37
2004.10.03
Программеры и напитки


3-1094553175
far
2004-09-07 14:32
2004.10.03
Range check error при открытии TIBQuery


1-1095691197
Goga
2004-09-20 18:39
2004.10.03
Управление объектом


14-1095023837
gas
2004-09-13 01:17
2004.10.03
Перетаскивание текста между программами