Udostępnij za pośrednictwem


Miejsce do magazynowania rejestru

Chociaż istnieje kilka ograniczeń technicznych dotyczących typu i rozmiaru danych, które aplikacja może przechowywać w rejestrze, istnieją pewne praktyczne wytyczne w celu promowania wydajności systemu. Aplikacja powinna przechowywać dane konfiguracji i inicjowania w rejestrze oraz przechowywać inne rodzaje danych w innym miejscu.

Ogólnie rzecz biorąc, dane składające się z więcej niż jednego lub dwóch kilobajtów (K) powinny być przechowywane jako plik i określane przy użyciu klucza w rejestrze, a nie przechowywane jako wartość. Zamiast duplikować duże fragmenty danych w rejestrze, aplikacja powinna zapisać dane jako plik i odwołać się do pliku. Wykonywalny kod binarny nigdy nie powinien być przechowywany w rejestrze.

Wpis wartości używa znacznie mniej miejsca w rejestrze niż klucz. Aby zaoszczędzić miejsce, aplikacja powinna grupować podobne dane jako strukturę i przechowywać strukturę jako wartość, a nie przechowywać poszczególnych składowych struktury jako oddzielnego klucza. (Przechowywanie danych w postaci binarnej umożliwia aplikacji przechowywanie danych w jednej wartości, która w przeciwnym razie składałaby się z kilku niezgodnych typów).

Widoki plików rejestru są mapowane w pamięci stronicowanej puli.

Windows Server 2008 dla 32-bitowych, Windows Vista z dodatkiem SP1 dla 32-bitowych, Windows Vista, Windows Server 2003, Windows XP: Widoki plików rejestru są mapowane w przestrzeni adresowej pamięci podręcznej komputera. W związku z tym, niezależnie od rozmiaru danych rejestru, nie są naliczane opłaty większe niż 4 megabajty (MB).

Maksymalny rozmiar gałęzi rejestru wynosi 2 GB, z wyjątkiem gałęzi systemu.

Windows Server 2003 z dodatkiem SP1, Windows Server 2003 i Windows XP: Nie ma jawnych limitów całkowitej ilości miejsca, które mogą być używane przez gałąź w pamięci stronicowanej puli i na dysku, chociaż przydziały systemowe mogą mieć wpływ na rzeczywisty maksymalny rozmiar. Maksymalny rozmiar gałęzi rejestru był ograniczony do 2 GB, począwszy od systemu Windows Server 2003 z dodatkiem Service Pack 2 (SP2).

Maksymalny rozmiar gałęzi systemu jest ograniczony pamięcią fizyczną, jak pokazano w poniższej tabeli.

System Maksymalny rozmiar gałęzi systemu
Systemy oparte na architekturze x86 50% pamięci fizycznej, do 400 MB.Windows Server 2003 z dodatkiem SP2, Windows Server 2003 z dodatkiem SP1, Windows Server 2003 i Windows XP: 25 procent pamięci fizycznej, do 200 MB.
Systemy oparte na architekturze x64 50% pamięci fizycznej, do 1,5 GB.windows Server 2003 z dodatkiem SP2: 25 procent pamięci systemowej, do 200 MB.
Windows Server 2003 z dodatkiem SP1, Windows Server 2003 i Windows XP w wersji 64-bitowej: 32 MB.
Systemy oparte na technologii Intel Itanium 50% pamięci fizycznej, do 1 GB.Windows Server 2008, Windows Vista, Windows Server 2003 z dodatkiem SP2, Windows Server 2003 z dodatkiem SP1, Windows Server 2003 i Windows XP 64-Bit Edition: 32 MB.

Windows 2000

Dane rejestru są przechowywane w puli stronicowanej — obszarze pamięci fizycznej używanej na potrzeby danych systemowych, które można zapisywać na dysku, gdy nie są używane. Wartość RegistrySizeLimit określa maksymalną ilość stronicowanej puli, która może być zużywana przez dane rejestru ze wszystkich aplikacji. Ta wartość znajduje się w następującym kluczu rejestru:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
         Control

Domyślnie limit rozmiaru rejestru wynosi 25 procent stronicowanej puli. (Domyślny rozmiar stronicowanej puli wynosi 32 MB, więc jest to 8 MB). System zapewnia, że minimalna wartość RegistrySizeLimit wynosi 4 MB, a wartość maksymalna wynosi około 80% wartości PagedPoolSize. Jeśli wartość tego wpisu jest większa niż 80 procent rozmiaru stronicowanej puli, system ustawia maksymalny rozmiar rejestru na 80 procent rozmiaru stronicowanej puli. Uniemożliwia to rejestrowi zużywanie miejsca potrzebnego przez procesy. Należy pamiętać, że ustawienie tej wartości nie przydziela miejsca w puli stronicowanej ani nie zapewnia, że miejsce będzie dostępne w razie potrzeby.

Rozmiar stronicowanej puli jest określany przez wartość PagedPoolSize w następującym kluczu rejestru:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
         Control
            SessionManager
               MemoryManagement

Aby zapoznać się z przykładem sposobu określania bieżących i maksymalnych rozmiarów rejestru, zobacz Określanie rozmiaru rejestru.

Maksymalna stronicowana pula wynosi około 300 470 MB, więc limit rozmiaru rejestru wynosi 240–376 MB. Jeśli jednak jest używany przełącznik /3GB, maksymalny rozmiar stronicowanej puli wynosi 192 MB, więc rejestr może wynosić maksymalnie 153,6 MB.