1

В 32-разрядной версии Excel 2010 доступно только 2 ГБ ОЗУ, даже если на моем компьютере есть 16 ГБ.

Мой вопрос:

Если я открою второй экземпляр Excel (а не вторую книгу, но заново открою всю программу), каждый из них использует 2 ГБ ОЗУ или разделяет 2 ГБ ОЗУ?

1 ответ1

2

2 ГБ, которые процесс может использовать в 32-битной Windows, не являются "ОЗУ". Это виртуальное адресное пространство, и это просто верхний предел; большинство экземпляров большинства программ будет использовать только часть этого.

Однако каждый экземпляр Excel, который находится в своем собственном процессе (как показано в столбце "Процессы" диспетчера задач на Win7, "Сведения" на Win10), имеет возможность использовать до 2 ГБ виртуального адресного пространства.

Если вы открываете несколько электронных таблиц в одном и том же процессе Excel.exe, это не отдельные экземпляры, и вся эта работа выполняется в одном и том же адресном пространстве процесса (не более 2 ГБ виртуальных).

Отношение виртуального адресного пространства к оперативной памяти очень "мягкое". Создание процесса, который, как и все процессы, работающие в 32-битной Windows, может использовать до 2 ГБ VAS (но большинство не будет), - по сути не использует какой-либо конкретный объем ОЗУ, за исключением небольшого объема (менее мегабайта)) для неструктурируемых структур данных ядра, которые управляют процессом.

Оперативная память выделяется процессам по требованию. Обычно только около одной десятой до четверти виртуального адресного пространства процесса (которое, опять же, не будет 2 ГБ на единицу; это будет все, что необходимо для кода и данных процессов) будет занимать ОЗУ. Сколько зависит от того, к какому количеству он активно обращается, и от того, сколько оперативной памяти доступно. Чем больше ОЗУ доступно, тем больше ОЗУ может использовать каждый занятый процесс, то есть больше виртуального адресного пространства каждого процесса будет "резидентным" в ОЗУ в любой момент. Наблюдаемое использование оперативной памяти процесса и самой Windows во многом зависит от обстоятельств: сколько оперативной памяти имеет машина и насколько заняты другие процессы.

Как и любой другой исполняемый файл в Windows, если вы запускаете более одного экземпляра процесса, части кода, которые были перенесены в ОЗУ для каждого экземпляра, будут доступны другим (и). Таким образом, хотя каждый из них будет жить в своем собственном виртуальном адресном пространстве, он не будет занимать несколько наборов оперативной памяти для своего кода; код распределяется в оперативной памяти. С другой стороны, данные, характерные для каждого экземпляра, занимают как виртуальное адресное пространство, так и ОЗУ отдельно для каждого процесса.

Ограничение "2 ГБ" для виртуального адресного пространства, описанное во всех вышеперечисленных, может составлять 4 ГБ, если это 32-разрядное приложение, "поддерживающее большие адреса" и работающее в 64-разрядной Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .