Поведение 32-битных приложений в 64-битной Windows (память) - PullRequest
2 голосов
/ 29 декабря 2011

Я занимаюсь разработкой 32-битного приложения в .NET, которое по разным причинам не может быть скомпилировано как 64-битное приложение.

Мне нужно запустить многие из них одновременно, и они используют много памяти. Я хочу загрузить коробку Windows 7 с тоннами памяти и, следовательно, хотел бы использовать 64-разрядную версию Windows 7, чтобы на них можно было разместить много гигабайт оперативной памяти.

У меня такой вопрос: максимальный объем памяти, используемый каждым экземпляром моего приложения, составляет ~ 500 МБ. В 64-битной Windows 7 эти 32-битные приложения будут запускаться (я полагаю) с использованием эмуляции WOW64 в Windows. Когда я начну запускать все больше и больше этих экземпляров одновременно, все они будут зависать, работая в нижних 2 ГБ оперативной памяти, или Windows выделит для них память, используя весь диапазон памяти с более высоким адресом, возможный в 64-битной Windows? Является ли ограничение адресуемой памяти 32-битного программного обеспечения ограничением только для каждого экземпляра в этом случае, или все экземпляры будут ограничены нижними 2 ГБ оперативной памяти?

1 Ответ

2 голосов
/ 29 декабря 2011

Вы путаете память (физическое адресное пространство) с виртуальным адресным пространством.Вы можете поместить более 4 ГБ памяти в 32-битную систему;вам не нужно переходить на 64-битные, чтобы получить физическое адресное пространство.Каждый процесс получает свое собственное виртуальное адресное пространство, поэтому каждый из них получит 2 ГБ адресного пространства пользовательского режима, с которым можно поиграть.(Или 3 ГБ, если / 3 ГБ или 4 ГБ, если работает на WOW64 с /LARGEADDRESSAWARE.)

...