Недавно я проводил обширное профилирование по ограничениям памяти в .NET для 32-битного процесса. Мы все засыпаем идеей, что мы можем выделить до 2,4 ГБ (2 ^ 31) в приложении .NET, но, к сожалению, это не так :(. Процесс приложения имеет так много места для использования, и операционная система делает большие Тем не менее, для нашей работы, связанной с управлением ею, сама .NET, похоже, имеет свои собственные издержки, которые составляют примерно 600–800 МБ для типичных реальных приложений, которые увеличивают ограничение памяти. 1,4 ГБ, следует ожидать появления исключения OutOfMemoryException ().
Очевидно, что в 64-битной версии это ограничение наступает гораздо позже (давайте поговорим через 5 лет :)), но общий размер всего в памяти также увеличивается (я нахожу, что это ~ 1,7-2 раза) из-за увеличенного размера слова .
Что я точно знаю, так это то, что идея виртуальной памяти из операционной системы определенно НЕ дает вам практически бесконечное пространство для выделения в одном процессе. Только в этом случае все 2,4 ГБ памяти можно адресовать всем (многим) приложениям, работающим одновременно.
Надеюсь, это понимание поможет.
Я первоначально ответил на что-то связанное здесь (я все еще новичок, поэтому не уверен, как я должен делать эти ссылки):
Есть ли ограничение памяти для одного процесса .NET