Какова максимальная память, которую сборщик мусора может выделить для процесса .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 ГБ