2010-01-18 3 views
1

Я сильно ожидаю, что это закончится как дублирование, но я не могу найти его.Пределы использования памяти для программ в Windows (7)

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

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

+1

Сколько памяти он использует? –

+0

О, дорогая, я носил поврежденный файл данных для Windows. Как смущающе. С этим файлом использование памяти на MacOSX достигает 3G и продолжает двигаться. – bmargulies

ответ

1

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

2

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

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

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

Смежные вопросы