32-bit applications and 2GB of virtual address space have something in common (and no, it's not the number 2). 2GB of virtual address space is the maximum amount of address space you can use in a normal 32-bit Windows application. Until the advent of Windows Vista, the 2GB limit was more apparent than real. However, as Anandtech.com has discovered, many recent games typically use much more virtual memory address space under Windows Vista than under Windows XP, and high-end graphics cards typically feature 512MB or more of video RAM, which makes the addressing problem even worse. How bad can it get? Try this: game crashes with some of the biggest games on the market!
Who's in Charge Here? DirectX 10? DirectX 9 Games? Pick Two
The problem is that while DirectX 10 manages memory address allocations for GPUs and applications, virtualizing video memory address space allocation, most games still use DirectX 9 (or earlier versions). DirectX 9 and earlier DirectX versions do not manage memory address space allocations, but leave the management task up to individual games. Consequently, when you play DirectX 9 games under Windows Vista, Vista's DirectX 10's busy managing virtual memory addresses, but meanwhile each DirectX 9 game is also managing virtual memory addresses. DirectX 10 and each DX9 game are unaware of the other's activities. Sooner or later, thanks to this 'double-dipping' of address space, the virtual address bucket is empty - and your system heads off to Crashland!
The Short-Term Fix - A New Video Memory Manager
Microsoft's interim solution? Retool the video memory manager to prevent exhaustion of virtual memory space by categorizing applications' use of memory addresses as lockable (consumes virtual memory address space) or not lockable (does not consume virtual memory address space). Learn more about this hotfix at Knowledge Base article 940105. To request this hotfix by email, go to the Contact Us: Hotfix Request Web Submission Form page and enter 940105 along with the system language and your email address. You should receive a link to the hotfix within about eight business hours (I received mine in less than an hour, but your mileage may vary).
The Long Term Fix? Can You Say "64-Bit?"
What's the long-term fix? It's not adding more RAM to your 32-bit system (unless you're running less than 2GB now). Because of motherboard design limitations and the 2GB virtual memory memory address limit, 2GB is the best memory size for 32-bit Windows today. It is possible to create a "large address aware" application that can address more than 2GB of virtual memory addresses, but most games that may hit the barrier do not use this option, and will still run out of virtual address space before reaching 3GB, even when this option is used.
As Microsoft discusses in its white paper "Virtual Address Space Usage in Windows Game Development,", the long-term answer has a very familiar ring: switch to 64-bit operating systems, which have an 8TB (8 trillion byte) virtual memory address space when "large address aware" coding is use, and 64-bit games and other applications. Hey, sign me up! That is, as soon as the application, game, utility, and device vendors are up to the challenge. Unfortunately, waiting for 64-bit support still looks like a long wait from here.