Используйте Process Explorer вместо диспетчера задач, чтобы посмотреть потребление памяти вашим приложением.
- Private Bytes: объем памяти, используемый вашим приложением. Это также значение, отображаемое диспетчером задач в столбце Размер виртуальной машины (под XP)
- Размер виртуальной памяти: это самый большой адрес, который в настоящее время используется вашим приложением. Это значение ограничено 2 ГБ (для 32-разрядных приложений в 32-разрядных ОС).
Различия между частными байтами и размером виртуальной памяти вызваны фрагментацией памяти. Единственное, что вы можете с этим поделать, - это использовать менеджер памяти, который пытается уменьшить фрагментацию, например, с помощью пулов памяти.
Менеджер памяти DougLea является бесплатной альтернативой. Также есть коммерческий менеджер памяти. Вы также можете попробовать написать свой собственный менеджер памяти (это не так сложно: вам нужно только переопределить операторы new и delete).
Есть также хитрости по увеличению лимита до 2 ГБ. Если вы свяжете свое приложение с флагом / LARGEADDRESSAWARE, ваше приложение сможет выделить 3 ГБ памяти (если XP загружается с флагом / 3GB, для Vista / W7, вероятно, есть аналогичный флаг, но я этого не знаю). В 64-разрядных операционных системах исполняемый файл LargeAddressAware может использовать до 4 ГБ памяти.