К сожалению не очень хорошо разбираюсь в механизме выделения памяти в Windows
Предистория:
создаем пустой проект с использованием Microsoft VC и Borland CBuilder и получаем ЕХЕ-шники соответственно в 7К и 10К.
Количество памяти выделенного виндой под эти проги (если верить taskmgr W2K) составляет около 500К для VC и 1100К для BCB.
Вопрос ?
откуда такая разница в объеме выделеной памяти ???
и вообще почему ТАК МНОГО ???
08.01.03 12:24: Перенесено модератором из 'C/C++' в Средства разработки. — ХД
Здравствуйте, kronprince, Вы писали:
K>на 1МБ глобальных переменных ???? K>а не многовато ли для 10К програмки ???
Нет не много. Еще там выделяется место под стек, хип и т.п. Причем всегда есть возможность уменьшить эти размеры. А к чему вообще этот вопрос? И почему вообще должно быть мало? Например для того, чтобы в Java вывести "Hello world" на консоль нужно загрузить порядка 600-700 классов.
Здравствуйте, kronprince, Вы писали: K>создаем пустой проект с использованием Microsoft VC и Borland CBuilder и получаем ЕХЕ-шники соответственно в 7К и 10К. K>Количество памяти выделенного виндой под эти проги (если верить taskmgr W2K) составляет около 500К для VC и 1100К для BCB. K>Вопрос ? K>откуда такая разница в объеме выделеной памяти ??? K>и вообще почему ТАК МНОГО ???
А КАКАЯ это память? Скорее всего это DLL-ки — то есть "общая" память. Стэк — второй кандидат. Но если не нравится большой стэк — это можно урезать в опциях.
Если хочешь чтобы погадали — пришли дамп или чего там пишется про память. Или поищи более продвинутый анализатор.
...А отсюда наливаем, когда рецепт написан совсем неразборчиво...
Здравствуйте, kronprince, Вы писали:
K>К сожалению не очень хорошо разбираюсь в механизме выделения памяти в Windows K>Количество памяти выделенного виндой под эти проги (если верить taskmgr W2K) составляет около 500К для VC и 1100К для BCB. K>Вопрос ? K>откуда такая разница в объеме выделеной памяти ??? K>и вообще почему ТАК МНОГО ???
О, Вы затронули очень давний вопрос, ответ на который на самом деле очень прост: эти всего лишь разные настройки на рабочий размер набора страниц процесса. Можете в приложении (при старте, например) явно задать SetProcessWorkingSetSize, и результат Вас обрадует.
Иначе говоря, не забудьте вставлять этот вызов в Ваших приложениях, и, во-вторых, не обращайте на сию характеристику много внимания. Значимы такие ресурсы, как кол-во хэндлов.
Кстати, дополнительно могу отметить, что в GUI-приложениях объём занимаемой процессом памяти может сильно уменьшиться при такой тривиальной операции, как сворачивание окна. Этим иногда пользуются авторы tray apps.