Подтвердить что ты не робот

Максимальный объем памяти любого отдельного процесса в Windows может

Ограничения памяти для выпуска Windows отвечает, какой максимальный объем памяти может обрабатывать любой отдельный процесс в Windows:

В 32-разрядных версиях Windows один процесс может отображать и не указывать более 3 ГБ виртуальной памяти. В 64-битных версиях Windows, 32-разрядный процесс может отображать и адресуть не более 4 ГБ виртуальная память за раз.

Для 64-битных процессов сумму сложно вычислить, так как там являются многочисленными перекрывающимися пределами, которые могут применяться в зависимости от всех виды факторов. Это обычно около 7 ТБ.

Мой вопрос: как проверить значения, такие как "3 ГБ", "4 ГБ" и т.д.?

Можем ли мы написать код С#, чтобы доказать это? Есть ли способ для этого?

Спасибо.

4b9b3361

Ответ 1

Марк Руссинович опубликовал многостраничную серию на ресурсы памяти Windows, которая действительно очень хорошо обходится. Вы можете найти это здесь: http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Он освещает причины, по которым эти ограничения, а также тесты. Код для тестов плавает вокруг в трубах где-то.

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

Но, в двух словах, 32-разрядная 32-разрядная ОС: 2 ГБ, если не указано большое адресное пространство, и в этом случае 3 ГБ. 32 бит на 64-битной ОС: 2 ГБ, если не указано большое адресное пространство, и в этом случае 4 ГБ.

64-битный процесс: 2 ГБ, если не задано для большого адресного пространства, и в этом случае он может адресовать до 8 ТБ, если он не размещен в системах на базе Intel Itanium, которые ограничены 7 ТБ.

Microsoft заявляет о различных ограничениях (по вариантам и типам) по адресу: http://msdn.microsoft.com/en-us/library/aa366778.aspx

Ответ 2

Вы можете написать какой-то цикл в консольном приложении, чтобы проверить это.

Возможно, создайте строку, которая составляет ровно 1 МБ, и зациклируйте процесс конкатенации, чтобы увеличить ее размер, пока не получите... Ошибка.

На каждой итерации WriteLine указывается размер или количество итераций.

ИЗМЕНИТЬ

Я бы добавил, поскольку STRING является неизменным (несмотря на технически являющийся ссылочным типом), чтобы использовать OBJECT

Изменить два

Trisped указывает, что строка, помещенная в объект Object, по-прежнему остается неизменной.

Создание массива байтов [1024] должно сделать трюк.