Максимальная память, которую может выделить процесс .NET

Какой максимальный объем памяти может выделить сборщик мусора для процесса .NET? Когда я компилирую в x64, Process.GetCurrentProcess.MaxWorkingSet возвращает около 1,4 ГБ, но когда я компилирую в AnyCPU (x64), возвращается то же число. Для x64 это должно быть больше похоже на значение «Limit», которое отображается в диспетчере задач. Как я могу получить правильный номер, который будет вызывать OutOfMemory-Exceptions при превышении во всех случаях?

Несколько примеров того, что должен возвращать метод:

1) Конфигурация машины: x64-Windows, 4 ГБ физической памяти, файл подкачки 4 ГБ
-Как 64-битный процесс: 8 ГБ
-Как 32-битный процесс: 1,4 ГБ

2) Конфигурация машины: x64-Windows, 1 ГБ физической памяти, файл подкачки 2 ГБ
-Как 64-битный процесс: 3 ГБ
-Как 32-битный процесс: 1,4 ГБ

3) Конфигурация машины: x32-Windows, 4 ГБ физической памяти, файл подкачки 4 ГБ
-Как 64-битный процесс: не произойдет
-Как 32-битный процесс: 1,4 ГБ

4) Конфигурация машины: x32-Windows, 512 МБ физической памяти, 512 МБ файла подкачки
-Как 64-битный процесс: не произойдет
-Как 32-битный процесс: 1,0 ГБ

Ответы на вопрос(2)

Ваш ответ на вопрос