The virtual addresses that a process uses do not represent the actual physical location of an object in memory.
Instead, the system maintains a page map for each process, which is an internal data structure used
to translate virtual addresses into corresponding physical addresses. Each time a thread references an address,
the system translates the virtual address to a physical address.
For more information about virtual memory, see the following topics:
32-bit Windows
The virtual address space for 32-bit Windows is typically divided into partitions as follows.
| Range | Usage |
| Low 2GB
(0x00000000 through 0x7FFFFFFF) | Available to the process. |
| High 2GB
(0x80000000 through 0xFFFFFFFF) | Reserved for the system. |
If 4-gigabyte tuning (4GT) is enabled, the virtual address space
for 32-bit Windows is divided into partitions as follows.
| Range | Usage |
| Low 3GB
(0x00000000 through 0xBFFFFFFF) | Available to the process. |
| High 1GB
(0xC0000000 through 0xFFFFFFFF) | Reserved for the system. |
Only processes that have the IMAGE_FILE_LARGE_ADDRESS_AWARE flag set
in the image header have access to memory above 2 gigabytes (GB).
To adjust the process address space, use the BCDEdit /set command to set the increaseuserva boot entry option to a value between 2048 (2 GB) and 3072 (3 GB). The system address space adjusts as needed.
Windows Server 2003: Set the /USERVA
switch in boot.ini to a value between 2048 and 3072.
64-bit Windows
For more information about virtual memory in 64-bit Windows, see
Virtual Address Space in 64-bit Windows.
Send comments about this topic to Microsoft
Build date: 8/22/2008