Вниз
Скачать: CL | DM;

Странности с памятью   Найти похожие ветки 

← →
Zoom   (2005-12-05 20:50) [0]

Есть 2 exe"шника, различающиеся 2 строками. Вот лежат: http://rulezmaker.fatal.ru/mp3.rar (145kb)
Для работы с иконкой в трее обрабатывается cворачивание/разворачивание формы.

procedure Tform1.dominimize;
begin
Form.WindowState:=wsMinimized;
Form.HIDE;
end;

procedure TForm1.domaximize;
begin
Form.WindowState:= wsNormal;
Form.Show;
end;

Так я делаю в первом случае. А во втором все то же, но без строчек с изменением Form.WindowState. Если вы запустите эти програмы у себя, то сможете заметить в taskmanager"е, что при сворачивании 1я занимает всё такое же кол-во памяти (у меня от 3 до 4,5 кб), а 2я начинает занимать гораздо меньше - от 300 до 900б. Вопрос: Почему? У меня такое чувсттво, что дело здесь именно в KOL. Кстати, программы сжаты, в несжатом состоянии то же самое.


← →
Thaddy   (2005-12-06 17:23) [1]

Because Windows cached - part of- the screen of your application as a bitmap. a 600 Kb bitmap ;)


← →
Ajax ©   (2005-12-06 21:23) [2]

KOL не при чем. Попробуй свернуть любую программу на панель задач - результат тот же. Да и "занимаемая память" и то, что показыват "taskmanager" совершенно разные вещи.


← →
Zoom   (2005-12-06 22:53) [3]

Ok. So windows only caches my window if i hide"em? How can i avoid caching or what can i do to keep memory clear?


← →
homm ©   (2005-12-09 18:58) [4]

Тебе просто нужно почитать хорошую книжку про виртуальную память, обращая внимание на "рабочие множества" приложений. Кстати единици измерения не врные, наверное всеже 300-900 килобайт. Также рекомендую Вид->Выбрать столбцы->Объем виртуальной памяти.

2Thaddy
Этот битмар находится в видео памяти и не входит в рабочее множество.


← →
Barloggg   (2005-12-16 13:37) [5]

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

Это кстати можно проверить. Если винда XP то отключить все графические навороты и запустить проги еще раз.


← →
Zoom   (2005-12-20 01:49) [6]

У меня и так все, что можно, отключено. Насколько я понимаю, практических советов нет?


← →
fellix   (2005-12-20 13:28) [7]

Zoom   (20.12.05 01:49) [6]
> ...практических советов нет?

В смысле, как уменьшить объем занимаемой памяти?
Ну, например, добавить в dominimize вызов
SetProcessWorkingSetSize(GetCurrentProcess, DWORD(-1), DWORD(-1));


← →
homm ©   (2005-12-22 21:38) [8]


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


← →
Boguslaw   (2005-12-23 16:06) [9]

As I know Delphi memory manager allocates about 1 MB from start to "faster" use it when requested.Is it true ?
How about compare it creating empty application (need some while 1=1 do; loop to prevent program end) in Delphi and in C ?



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
1-1157272016
atruhin
2006-09-03 12:26
2006.10.15
Ипользование объекта вместо записи


2-1159275606
Alex_C
2006-09-26 17:00
2006.10.15
Как избавится от мелькания Memo при перерисовке?


2-1159358066
Fostr
2006-09-27 15:54
2006.10.15
Передать данные из одной формы в другою


15-1158745989
Benchmark
2006-09-20 13:53
2006.10.15
Сколько выжимает ваш проц?


2-1159698030
redlord
2006-10-01 14:20
2006.10.15
listbox выводить текст разным цветом




   Наверх