Вниз
Скачать: 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.026 c
4-1148993366
Grihan
2006-05-30 16:49
2006.10.15
Paint 32bit bitmap as disabled


15-1159108905
Проггер из библиотеки
2006-09-24 18:41
2006.10.15
Информация о мониторе Samtron 76 BDF


2-1159523468
buka
2006-09-29 13:51
2006.10.15
Установка компонента


15-1158731090
Интересующийся
2006-09-20 09:44
2006.10.15
Создание плагина для IE or Opera.


4-1149090395
DeeGreeZ
2006-05-31 19:46
2006.10.15
Работа с ИК портом




   Наверх