![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кто хавает память? [D5, NT4, WinXP]
TTCustomDelphiMaster © (2002-07-09 11:48:00)Уважаемые коллеги! Както раз я задавал этот вопрос на одном из форумов, но ничего путного мне не ответили. Мобыть вы поможете.
Както делал я программулину, которая ждет часа Ч используя таймер, в час Ч она читает инфу из файла (там написано какую прогу запускать и тд), обрабатывает ее и запускает прогу. Получает ответ о выполнении проги, настраивается на новый час Ч и засыпает.
Так вот захотел я вынести все мозговые функции программулины в dll, чтобы в основное время, когда она спит меньше памяти кушала.
Но получилось так, что при динамическом подключении dll размер памяти занимаемой программулиной увеличивался на 4 кб.
Тогда я провел эксперимент: по таймеру подключал и тут же отключал dll не вызывая никаких функций. Размер памяти занимаемой программой начал быстро увеличиваться по 4 кб и когда я пришел с обкурки (через 5 минут) достиг 30 МБ !!!
Ладно, забил я на dll сделал в exe"шнике. Но и тут интересная штука получилась. После запуска он занимает 1,7 Мб. Через час тоже. Через два тоже. Но на следующее утро занимает уже 430 кБ.
Так вот у меня сложилось впечатление, что память занимаемая локальными переменными и при удалении меродом FREE освобождается не сразу а через некоторое время.
Может ктото сталкивался с такими случаями или знает как это объяснить?
TTCustomDelphiMaster (2002-07-09 15:22:00) [1]Оказывается я неудачно выбрал dll для эксперимента
procedure TForm1.Timer1Timer(Sender: TObject);
var
Handle: THandle;
begin
// Использую свою и размер памяти постоянный
Handle := LoadLibrary("mymath.DLL");
// А так размер памяти занимаемой программой увеличивается
// Handle := LoadLibrary("C:\WINDOWS\SYSTEM\KERNEL32.DLL");
FreeLibrary(Handle);
end;
> Игорь Шевченко © (09.07.02 15:17)
Травой уже давно не питаюсь, только bond lights
Игорь Шевченко (2002-07-09 15:17:00) [2]id_privin (09.07.02 14:32)
Где такую траву берешь ?
id_privin (2002-07-09 14:32:00) [3]Слышал (сам не тестировал, но верю) что Windows после закрытия приложения и прочих операций сброса памяти, эту память не освобождает а держит еще некое время, на случай если она опять потребуется
IlyaA (2002-07-09 14:25:00) [4]Могу тебе сказать что размер проги уменьшился т.к. её часть (не используемая) упала в Swap, а в памяти осталось только то, что непосредственно используется
Skier (2002-07-09 12:18:00) [5]>TTCustomDelphiMaster
А может у тебя (при использовании DLL) Application.Handle
неправильно настраивается ???
TTCustomDelphiMaster (2002-07-09 12:10:00) [6]В рабочем варианте да.
А в экперементальном (где 30 МБ отъела) ничего кроме формы, таймера и dll не было.
Eugene Lachinov (2002-07-09 11:55:00) [7]Ini-файлы используются ?