| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Уменьшение занимаемой оперативной памяти |
| Автор: Klose 9.8.2006, 15:36 |
| Наверное такая тема была, но не смог найти. Можно ли как-нибудь сделать, чтобы программа занимала меньше оперативки?А то сама весит 25кб, а (посмотрел в Диспетчере задач) занимает оперативки 2500 кб. Некрасиов так=) |
| Автор: Snowy 9.8.2006, 15:40 |
| А ты её сверни и разверни Не всегда можно верить тому, что показывает диспетчер. |
| Автор: Alexeis 9.8.2006, 15:42 |
| Практически не возможно, минимальная програма занимает у меня 1.7 Мб Единственый вариант писать прогу без окон вообще |
| Автор: Rennigth 9.8.2006, 15:45 |
| Klose, а что программа делает-то? ГЫ... размер exe практически не влияет сколько она будет кушать памяти |
| Автор: Alexeis 9.8.2006, 15:46 |
После нескольких своротов и разворотов уже 404кб, все остальное в подкачке. |
| Автор: Klose 9.8.2006, 16:09 | ||||
В том-то и дело, что почти что нечего. Просто "переводит" с одного текстового поля, в другое. Воть. А что, правда когда сворачиваешь-разварачиваешь, уменьшаеться. Круть, я и незнал.
Попробую. |
| Автор: Alexeis 9.8.2006, 16:11 |
| Теперь я узнал сколько же всего виртуальной памяти жрет winmin -> 2.132Мб |
| Автор: dumb 9.8.2006, 16:14 | ||||
начальное значение размера рабочего набора (working set) задается системой равным дефолтному, которое зависит от версии(проф,сервер,итд), установленной памяти итд.
"сворот" инициирует усечение рабочего набора. если рабочий набор был больше, чем требовалось, свопить ничего и не будет.
обнуляет размер рабочего набора, фактически выгружая процесс из памяти в своп. т.е. такой метод простой, но немного некорректный по отношению к работающей проге, так как потом mm должна будет заново увеличивать ws и подгружать процесс из свопа. |
| Автор: Alexeis 9.8.2006, 16:17 | ||
Значит стоит сразу ей установить 404 кб? |
| Автор: Klose 9.8.2006, 16:20 | ||
Помогает. Щас стало 1 300 кб. |
| Автор: drkot 9.8.2006, 16:24 |
а каковы тогда критерии кушания памяти? Память занимаемая программой должна состоять из проэкции ехе-шника (не обязательно всего) + память переменных и стека + динамически выделяемая из кучи. (утрировано конечно, концептуально правильно). В досе так и было если ехе-шник весит 40кил так он и в памяти 40 + куча весить будет. А в винде как? ЗЫЖ диспечер конечно надиратель еще тот, но таскинфо зачастую несильно отличается в оценке занятой памяти. Добавлено @ 16:29 мнимая помощь имхо |
| Автор: Romikgy 9.8.2006, 16:33 |
| на вин апи пиши |
| Автор: Klose 9.8.2006, 16:34 |
| Так на нем и пишу. |
| Автор: Romikgy 9.8.2006, 16:37 |
| чет мало верится, хотя тогда могет быть , только значит коряво юзаешь если 2 метра, имхо |
| Автор: drkot 9.8.2006, 16:42 |
| простейший сервис (пустышка) (написаный полностью на API ) занимает 1500кб. А половина системных сервисов занимают <=1000кб (так они еще и делают чето и память выделяют) В чем правда брат? сам ехе-шник весит 17кб (без сжатий и пр.) |
| Автор: Klose 9.8.2006, 17:17 | ||
Вот это может быть=) |
| Автор: dumb 9.8.2006, 17:34 |
| тут важно понимать, что размер рабочего набора процесса - это не размер образа + размер выделенной процессом памяти. в него также входят разделяемые страницы, коих, в зависимости от используемых api-функций может быть довольно много. опять же, далеко не весь образ может сразу прогрузиться в рабочий набор. манипулирование рабочим набором происходит исходя из кучи параметров: страничные ошибки потоков, свободная память, времени и активности работы приложения итд итп. в общем, мое мнение - не стоит "руками" пытаться что-то сделать. все эти фичи типа "минимальный размер занимаемой памяти" относятся больше к маркетингу. дос умер. сейчас буду посылать. http://old.osp.ru/win2000/2004/01/038.htm http://cs.mipt.ru/docs/courses/osstud/10/ch10.htm http://www.unix.org.ua/unix2/glava_20.htm |