![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странности с памятью
Zoom © (2005-12-05 20:50:00)Есть 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. Кстати, программы сжаты, в несжатом состоянии то же самое.
Boguslaw (2005-12-23 16:06:00) [1]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 ?
homm (2005-12-22 21:38:00) [2]
> Насколько я понимаю, практических советов нет?
А я тебе разве не практический совет дал - почитай умные книжки про виртуальную память, в любом случае это будет для тебя полезно, плюс перестанешь на подобного рода глупости время тратить.
fellix (2005-12-20 13:28:00) [3]Zoom (20.12.05 01:49) [6]
> ...практических советов нет?
В смысле, как уменьшить объем занимаемой памяти?
Ну, например, добавить вdominimizeвызов
SetProcessWorkingSetSize(GetCurrentProcess, DWORD(-1), DWORD(-1));
Zoom (2005-12-20 01:49:00) [4]У меня и так все, что можно, отключено. Насколько я понимаю, практических советов нет?
Barloggg (2005-12-16 13:37:00) [5]но вообще звучит логично, если форму сначала свернуть, то винда сделает с нее битмап-копию для того чтобы применить какую-нибудь хитрую анимацию.
Это кстати можно проверить. Если винда XP то отключить все графические навороты и запустить проги еще раз.
homm (2005-12-09 18:58:00) [6]Тебе просто нужно почитать хорошую книжку про виртуальную память, обращая внимание на "рабочие множества" приложений. Кстати единици измерения не врные, наверное всеже 300-900 килобайт. Также рекомендую Вид->Выбрать столбцы->Объем виртуальной памяти.
2Thaddy
Этот битмар находится в видео памяти и не входит в рабочее множество.
Zoom (2005-12-06 22:53:00) [7]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?
Ajax (2005-12-06 21:23:00) [8]KOL не при чем. Попробуй свернуть любую программу на панель задач - результат тот же. Да и "занимаемая память" и то, что показыват "taskmanager" совершенно разные вещи.
Thaddy (2005-12-06 17:23:00) [9]Because Windows cached - part of- the screen of your application as a bitmap. a 600 Kb bitmap ;)