ОК, поэтому у меня есть очень большое многопоточное неуправляемое приложение c ++ (сервер), которое работает на сервере Windows 2003. Он обслуживает сеансы для 20-50 одновременно работающих пользователей, выполняющих все виды бизнес-логики ... Иногда он может использовать очень большой объем памяти из-за таких вещей, как кэширование объектов / сеансов из-за того, что пользователи имеют большое количество открытых окон в клиентах (каждое окно имеет отдельный сервер 'сеанс'.
Мы обычно наблюдаем потребление более 5-600 МБ физической памяти и 5-600 МБ виртуальной памяти. Как только мы дошли до этой точки, у нас, похоже, начались ошибки «недостаточно памяти».
Теперь я знаю, что Windows начнет сбои страниц, когда почувствует, что ей необходимо освободить физическую память, а также что приложения win32 обычно могут выделять максимум до 4 ГБ памяти, на самом деле только с 2 ГБ памяти. которые доступны для фактического использования приложением для адресного пространства «пользовательского режима», и даже меньше после загрузки других библиотек ... Я не уверен, что использование памяти «пользовательского режима» - это то, что сообщается на Диспетчер задач ...
Так или иначе, мой реальный вопрос:
Как я могу узнать, сколько памяти пользовательского режима имеет доступ к моему приложению, и сколько было использовано в любой момент времени (предпочтительно снаружи приложения, т.е. какого-то инструмента управления окнами)?
[править] После просмотра Process Explorer и веб-сайта кажется, что значение «Виртуальный размер» - это значение объема памяти, к которому приложение имеет доступ.