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

Вниз

использование памяти   Найти похожие ветки 

 
Bil Bal Dur   (2005-01-14 14:15) [0]

интересно узнать: почему приложение KOL объёмом 15 K занимает в памяти почти столько же места, что и VCL приложение (386 K) ? Ну не столько же, но сравнимо.

и вот ёще: в своём приложении я загружаю PImageList, некоторое время пользую его, потом Free. Если закоментить весь этот фрагмент, то приложение занимает в памяти примерно на 300 K меньше. Почему? Ведь я же освобождаю память, или нет?


 
dimaxx ©   (2005-01-15 00:06) [1]

Я так понимаю, на создание объекта и хранение его структуры тоже память расходуется. Плюс хранимые изображения. А насчет высвобождения памяти это к БГ - ну не умеет винда работать с памятью!!

Насчет занимаемого места: а компилятор-то один и тот же - вот и размеры совпадают. :-)


 
Boguslaw   (2005-01-15 01:12) [2]

Check this siple test:
Minimize and then restore main form of application - size in memory when minimized is far smaller than when form is shown !

Alternatively : use
SetProcessWorkingSetSize(GetCurrentProcess, dword(-1), dword(-1));

after releasing memory like You did and You will see also some memory deallocated. This isbecouse Delphi memory manager is no so fine integrated into system like for example MS VC++ ;-)
So in Delphi based program memory manager allocate more memory (remember of AnsiString usage!) and also system probably not know when this memory is deallocated, only when some memory is needed then system reclaim memory from Delphi program.

From other side - this memory is not swapped into file so Delphi program is faster (not then VC++!) then would be if this 1-2 MB won"t be allocated on program start (this is used by memory manager to speed up creating classes for example)
I"m not expert but this issue was important and I did a small research.

Regards
Boguslaw Brandys


 
Bil Bal Dur   (2005-01-15 13:52) [3]

Всё же хочется разобраться:

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
 var img:PImageList;
begin
 img:=NewImageList(nil);
 img.LoadSystemIcons(true);
 img.Free;
end;

или так:

 var img:PImageList; // глобальная

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
 img:=NewImageList(nil);
 img.LoadSystemIcons(true);
end;

procedure TForm1.KOLForm1Close(Sender: PObj; var Accept: Boolean);
begin
 img.Free;
end;

а памяти занимают почти одинаково. Т.е. можно вообще все переменные делать глобальными? Да и Free тогда зачем, всё равно
при выходе из программы вся память освободиться.

А SetProcessWorkingSetSize(GetCurrentProcess,dword(-1),dword(-1)) - действительно помогает, спасибо!!!

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
var img:PImageList;
begin
 img:=NewImageList(nil);
 img.LoadSystemIcons(true);
 img.Free;
 SetProcessWorkingSetSize(GetCurrentProcess,dword(-1),dword(-1));
end;

работает!!! А что означают её вордовские параметры? (просто так, чтобы знать)


 
thaddy   (2005-01-15 15:16) [4]

работает!!! But only on NT/XP!!


 
dimaxx ©   (2005-01-15 15:21) [5]

2 Bil Bal Dur: ...Да и Free тогда зачем, всё равно при выходе из программы вся память освободиться...

Ща! Как же. Попробуй позапускай подряд раз 50 прогу на 256 мегах памяти и увидишь, как будет расти файл подкачки, если его поставить размером всего 32-64 мега. Точных настроек не помню - давно эксперимент проводил.

Это только кажется, что память освобождается, а на самом деле она освобождается частично.


 
Boguslaw   (2005-01-16 14:00) [6]

For SetProcessWorkingSetSize check API documentation Win32SDK


 
имя   (2005-07-27 10:55) [7]

Удалено модератором


 
имя   (2005-07-27 10:55) [8]

Удалено модератором
Примечание: см. debil.ru


 
ECM ©   (2005-07-27 14:15) [9]

Удалено модератором


 
Thaddy   (2005-07-28 22:04) [10]

Can I get a red one too? Please?
I looked at that site. Can"t affort it....


 
Dodfr   (2005-07-28 23:13) [11]

hum sorry (as usual, no russian reading) I don"t get it, what"s the funny thing :-)



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1141845293
Новочеркасский Волк
2006-03-08 22:14
2006.03.26
Отправка письма. НУ НИКАК НЕ ХОЧЕТ!!!


2-1142324933
dabreezy
2006-03-14 11:28
2006.03.26
Опять вопрос по потокам


2-1142238022
Arazel
2006-03-13 11:20
2006.03.26
Отучить систему от Internet(a)


2-1142065880
AlexeyT
2006-03-11 11:31
2006.03.26
Число отображаемых строк в TMemo


15-1141624851
Ega23
2006-03-06 09:00
2006.03.26
С Днём рождения! 4 марта