Have you noticed an “out of memory” error message when attempting to open new applications in Microsoft Windows? Conventional wisdom may lead you to believe that the solution to this problem is installing more random access memory (RAM). But this error message is actually the result of a phenomenon known as a desktop heap limitation, and unfortunately it is not affected by the amount or type of physical RAM in the computer.
Desktop heap limitation occurs when an excessive number of application windows are opened. Depending on the version of Windows you are running, the window may open but not contain the expected elements, or it may not open, displaying the aforementioned error message instead. A Microsoft technician reportedly experienced this issue when attempting to run 40-50 windows.
“If you have a lot of applications open one thing you might notice is that Windows — even XP — will reach a point where no more windows can be opened. For me, IE hits this point after about 40-50 windows. Depending on what else you have running, you may be able to open more or less,” wrote Tony Schreiner, MSFT.
If the desktop heap limitation error isn’t related to physical RAM, how are you supposed to fix this issue? The easiest solution is to close some of your open windows. Pressing Ctrl+Alt+Del will reveal all running processes and their respective windows, at which point you can close any unnecessary windows. Bumping your open windows down to 30 or below should resolve this issue.
In the event that you’re actually using all of your open windows, you may need to edit the Windows registry. This is done by clicking the Start button, followed by typing regedit in the search box and clicking regedit.exe. Locate the following subkey – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems – and click Modify. This should reveal the following registry entry:
SystemRoot%\system32\csrss.exe
ObjectDirectory=\Windows
SharedSection=1024,3072,512
Windows=On
SubSystemType=Windows
ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off
MaxRequestThreads=16
Microsoft recommends increased the second string of numbers listed under the SharedSection entry. This number defines the total amount of desktop heap associated with each open window. So, change the current entry of 3072 to 20480 and click save.
It’s important to note that desktop heap limitation errors typically involve older versions of Microsoft Windows. Newer version use dynamic memory allocations, meaning you don’t have to set registry entries to define memory usage.