Текущий архив: 2006.10.15;
Скачать: 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 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.044 c