Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1159474413
A/A
2006-09-29 00:13
2006.10.15
TString


3-1155470796
Anonimus001
2006-08-13 16:06
2006.10.15
Базы данных


3-1156081674
ronyn
2006-08-20 17:47
2006.10.15
Filter Record


2-1159264876
vegarulez
2006-09-26 14:01
2006.10.15
Вопрос про мышь и 2 монитора (раб. стола).


1-1157549691
bnv123
2006-09-06 17:34
2006.10.15
DLL: функция VaComm.WriteText() вызывается при наличии MessageDlg





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский