Vista Hands On #17: Solving a pesky resource problem
Are you experiencing odd "out of memory" errors or display problems with Windows Vista when you try to open a large number of programs or windows? Even if you have multiple gigabytes of physical memory in your Windows Vista system and you're using only a fraction of it, you can still run into this problem. It turns out the cause is more than a decade old, and the solution is as simple as tweaking a Registry key to bump up the size of the mysterious interactive desktop heap. I've got the details.
Have you experienced any of these problems with Windows Vista? After opening a large number of programs and windows, you try to launch a new program or open a new browser tab or even switch back to an already running program and instead:
You get a strange “out of memory” message, despite the fact that you’re using only a fraction of the RAM installed on your system.
The window opens but its contents refuse to load.
The window opens, but menus are missing, dialog boxes are empty, or buttons don’t work.
In my case, I experienced this problem regularly on multiple Vista systems when I opened Outlook 2007, Forte Agent, Adobe Acrobat (editing three or four large documents), BlogJet, Windows Live Writer, Word (working with several large documents), and IE7 with more than 30 tabs. The problem vanished for me, as it does for most people, when I closed a few windows, but that’s obviously not the ideal solution. After all, what’s the point of having all that RAM if you can’t use it?
The problem, as it turns out, is as old as the Windows NT family. I’ve found references to this issue that date back to the mid-1990s and Windows NT 3.1 and 3.5. The fix for Vista, just as for those much older versions of Windows, involves editing a key in the Windows Registry.
First the problem: Windows sets aside a blob of system memory called the desktop heap, which it uses to store user interface objects such as windows, menus, and hooks. The Microsoft Advanced Windows Debugging and Troubleshooting Blog offers a dense, but still readable explication of the problem and why it occurs (it’s a two-part series: read the Desktop Heap Overview first and if your eyes haven’t glazed over read the shorter Desktop Heap Part 2 for details that are specific to 64–bit Windows, systems with 3GB of RAM, and Windows Vista).
The fix for 32–bit Windows Vista is simple: The interactive desktop heap size needs to be bumped up to a value greater than its default setting of 3072KB. I recommend a conservative approach: increase the value to 4096 and try that for a while. If you continue to bump into the problem, try a higher value. On one system here, I’ve been running without issues using a value of 8192KB.
Before I explain how to make the change, I offer the following disclaimers: Editing the Registry is not a trivial task. If you make a mistake, or if your system doesn’t work the way mine does, you could end up causing damage to data or render your system unbootable. You do this at your own risk.
OK, with that out of the way, here are the step-by-step instructions:
Click Start, type regedit in the Search box, and click the Regedit icon that appears at the top of the Start menu.
Click OK in response to the UAC prompt.
In Registry Editor, navigate to the following key:
– – CurrentControlSet
– – – Control
– – – – Session Manager
– – – – – SubSystems
In the contents pane to the right, double-click the Windows value from the bottom of the list. This opens an Edit String dialog box containing a very long text string.
Scroll through this text value until you find the section that begins with SharedSection. Change the second value from its default of 3072 to a higher number. Do not change any other values.
Restart the computer. If your experience is like mine, you’ll find that those odd error messages are gone and that you’re able to open many more windows without any display issues.