Ограничения использования памяти для программ в Windows (7) - PullRequest
1 голос
/ 19 января 2010

Я сильно ожидаю, что это закончится как дублирование, но я не могу найти его.

У меня есть программа на C ++, которую я обычно запускаю на 64-битном MacOSX SnowLeopard.

Когда я пытаюсь запустить его на 32-битной Windows 7, ему не хватает памяти. Возможно, это действительно требует слишком много памяти, но я хочу убедиться, что я не пропускаю какой-то вариант или другой, который позволяет мне выжать максимально возможный размер кучи.

Ответы [ 2 ]

2 голосов
/ 19 января 2010

32-битный Процесс имеет ограничение памяти 4 ГБ, но он разделен на 2 ГБ для адресного пространства пользователя и адресного пространства ядра.

Имеется ключ / 3GB, чтобы вы могли использовать 3 ГБ для пространства пользователя и 1 ГБ для пространства ядра. Для этого вам нужно изменить настройки в ОС через boot.ini (Win 2000, XP, 2003) или утилиту bcdedit (Win Vista и более поздние версии). Также вам нужно, чтобы ваш exe знал об этом переключателе, связывая его с флагом /LARGEADDRESSAWARE. Вы можете сделать это с помощью утилиты editbin (она поставляется вместе с Windows SDK).

Кроме этого, боюсь, вам придется внести некоторые изменения в работу своего приложения, чтобы оно не занимало столько памяти.

1 голос
/ 19 января 2010

Согласно этой таблице ограничение на процесс должно составлять 2 ГБ или 3 ГБ с некоторым вмешательством в реестр.Я не думаю, что это сильно отличается от предыдущих версий Windows.Я вспоминаю ограниченную адресуемую память XP до 3 ГБ.

...