Дисковое пространство реестра

Хотя существует несколько технических ограничений на тип и размер данных, которые приложение может хранить в реестре, существуют определенные практические рекомендации по повышению эффективности системы. Приложение должно хранить данные конфигурации и инициализации в реестре, а также другие типы данных в другом месте.

Как правило, данные, состоящие из более чем одного или двух килобайт (K), должны храниться в виде файла и ссылаться на них с помощью раздела в реестре, а не как значение. Вместо того чтобы дублировать большие фрагменты данных в реестре, приложение должно сохранить данные в виде файла и ссылаться на него. Исполняемый двоичный код никогда не должен храниться в реестре.

Запись значения использует гораздо меньше места в реестре, чем раздел. Чтобы сэкономить место, приложение должно сгруппировать аналогичные данные как структуру и сохранить структуру как значение, а не хранить каждый из членов структуры в виде отдельного ключа. (Хранение данных в двоичной форме позволяет приложению хранить данные в одном значении, которое в противном случае было бы состоит из нескольких несовместимых типов.)

Представления файлов реестра сопоставляются в памяти выгружаемого пула.

Windows Server 2008 для 32-разрядной версии, Windows Vista с пакетом обновления 1 (SP1) для 32-разрядной версии, Windows Vista, Windows Server 2003, Windows XP: Представления файлов реестра сопоставляются в адресном пространстве кэша компьютера. Таким образом, независимо от размера данных реестра, плата не взимается более чем за 4 мегабайта (МБ).

Максимальный размер куста реестра составляет 2 ГБ, за исключением системного куста.

Windows Server 2003 с пакетом обновления 1 (SP1), Windows Server 2003 и Windows XP: Нет явных ограничений на общий объем пространства, который может быть занят кустами в памяти выстраивного пула и дисковом пространстве, хотя системные квоты могут влиять на фактический максимальный размер. Максимальный размер куста реестра был ограничен 2 ГБ начиная с Windows Server 2003 с пакетом обновления 2 (SP2).

Максимальный размер системного куста ограничен физической памятью, как показано в следующей таблице.

Система Максимальный размер системного куста
Системы на основе x86 50 % физической памяти, до 400 МБ. Windows Server 2003 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 1 (SP1), Windows Server 2003 и Windows XP: 25 % физической памяти, до 200 МБ.
64-разрядные системы 50 процентов физической памяти, до 1,5 ГБ. Windows Server 2003 с пакетом обновления 2 (SP2): 25 % системной памяти, до 200 МБ.
Windows Server 2003 с пакетом обновления 1 (SP1), Windows Server 2003 и Windows XP 64-разрядная версия: 32 МБ.
Системы на базе Intel Itanium 50 % физической памяти, до 1 ГБ. Windows Server 2008, Windows Vista, Windows Server 2003 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 1 (SP1), Windows Server 2003 и Windows XP 64-разрядной версии: 32 МБ.

Windows 2000

Данные реестра хранятся в выгружаемом пуле— области физической памяти, используемой для системных данных, которые могут быть записаны на диск, когда они не используются. Значение RegistrySizeLimit определяет максимальный объем выгружаемого пула, который может использоваться данными реестра из всех приложений. Это значение находится в следующем разделе реестра:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
         Control

По умолчанию максимальный размер реестра составляет 25 % от выгружаемого пула. (Размер по умолчанию для выстраивного пула составляет 32 МБ, то есть это 8 МБ.) Система гарантирует, что минимальное значение RegistrySizeLimit составляет 4 МБ, а максимальное — приблизительно 80 процентов от значения PagedPoolSize . Если значение этой записи превышает 80 % от размера выгружаемого пула, система устанавливает максимальный размер реестра в 80 % от размера выгружаемого пула. Это не позволяет реестру потреблять пространство, необходимое процессам. Обратите внимание, что при установке этого значения не выделяется пространство в выстраившемся пуле и при необходимости он не гарантирует, что пространство будет доступно.

Размер постраничного пула определяется значением PagedPoolSize в следующем разделе реестра:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
         Control
            SessionManager
               MemoryManagement

Пример определения текущего и максимального размера реестра см. в разделе Определение размера реестра.

Максимальный размер выгружаемого пула составляет приблизительно 300 470 МБ, поэтому максимальный размер реестра составляет 240–376 МБ. Однако если используется параметр /3 ГБ, максимальный размер выгружаемого пула составляет 192 МБ, поэтому размер реестра может составлять не более 153,6 МБ.