Задался я целью написать програмку под Вин(с++ и АПИ) которая занимала бы минимум памяти, но вот такая незадача-ЛЮЬАЯ прога на любом языке занимает в памяти около 600 кб (хоть вечный цикл на asm) а ведь у виндов есть прцессы которые занимают 20-30 кб
Что делал:
ограничил оазмер стека и кучи до 4096 б не помогло
написал на asm аналогично
собственно вопрос:
что можно предпринять для уменьшения потребляемой памяти и куда идут эти 600 кб?
Здравствуйте VGV, Вы писали:
VGV>Задался я целью написать програмку под Вин(с++ и АПИ) которая занимала бы минимум памяти, но вот такая незадача-ЛЮЬАЯ прога на любом языке занимает в памяти около 600 кб (хоть вечный цикл на asm) а ведь у виндов есть прцессы которые занимают 20-30 кб VGV>Что делал: VGV>ограничил оазмер стека и кучи до 4096 б не помогло VGV>написал на asm аналогично VGV>собственно вопрос: VGV>что можно предпринять для уменьшения потребляемой памяти и куда идут эти 600 кб?
Декларируемый размер стека не особо повлияет. Так реально выделяется несколько физических страниц. Остальное — виртуальное.
А 600K — это что? VM size?
Наверное, часть из этого — просто виртуальное пространство. То есть, на физическую память не отображено.
Да и если есть committed память, не используемая процессом, она все равно будет впоследствии отожрана memory manager в пользу нуждающихся. Хотя конечно, без какого-то overhead не обойтись.
Я бы смотрел на размер non-paged pool.
&Y>да просто винда сжирает, может у неё по умолчанию под свои внутрение структуры сразу столько выделяется ;(
Вот эото будет очень плохо если так (как одну из версий оставим). Стондартные билиотеки я отключил, стек и кучу уменьшил...что ещё можно сделать я незнаю может каким продвинутым менеджером процессов посмотреть куда расодуется ОЗУ?(GDI или USER объекты всякие?).
ЗЫ эксперемент такой :
запускаем прогу, минимизируем и занимаемая память уменьшается, максимизируем — увеличивается НО НЕМНОГО!(до 230 Кб)
Здравствуйте AndreyT, Вы писали: AT>Я бы смотрел на размер non-paged pool.
это видимо и есть постоянно используемая память? а остально идет в файл_подкачки?
1Кб всего ... зачит всё не очень страшно?
Здравствуйте VGV, Вы писали:
VGV>Вот эото будет очень плохо если так (как одну из версий оставим). Стондартные билиотеки я отключил, стек и кучу уменьшил...что ещё можно сделать я незнаю может каким продвинутым менеджером процессов посмотреть куда расодуется ОЗУ?
запусти на неё монитор, поставь чтобы мониторил все интересное подряд, вдруг что увидишь интересное
Вопрос так и остается без ответа. Как написать программу, типа { "Hello World"; wait(forever); }, которая занимала бы, скажем, 50k? Имеются в виду показания Task Manager.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Всётаки прога 600Кб памяти и занимант--если её сзапустить и сворачивать разворачивать то именно столько и меняется
Никто случайно не знает откуда "System idle" берёт своё начало? (Я его расковыряю...)