I have a frustrating recurring problem on my machine, running XP SP2, of
apparently running out of memory or system resources, when as far as I can
tell there should be plenty of them.
I have 1GB of memory, and use a 1.5GB swap file (I've set a limit at 2GB).
When the problem shows, Process Explorer typically shows VM at around a 50%
committed state, and shows that plenty of physical memory is available
(100+MB). It shows the kernel pools decently far from their limits (Paged
130/160MB, Non-Paged 38/210MB). And my hard drives all have at least 5GB
free. Again, these stats are taken as I am looking at an error message that
says an application couldn't do something.
To trigger the problem, I can do something like the following:
- Fill the taskbar with my typical array of programs; a couple of IDEs and
source editors, Microsoft outlook, some build windows, MSDN, 5-6 IE windows,
etc.
- In outlook, Hit Ctrl+N to create a new message 5-6 times until it yields
an error that is presumably due to running out of resources (the error
message is usually more ambiguous).
At this point, I can launch practically nothing in the system successfully.
I can launch a script, but createprocess on cmd.exe will fail, usually due
to an obscure reason like a failure to load a DLL. I can launch task
manager, but it may fail, or it may create the main window with controls or
entire tabs missing. Windows may fail to paint, etc, etc.
With all the windowing issues, I used to suspect driver involvement (since
supposedly GDI has no limits in XP), but when cmd.exe fails to create, I
have to conclude it's even closer to the kernel than that.
I've read that the kernel has a virtual memory limit that is calculated on
bootup, and not dynamically resizable. Is it possible the kernel memory is
so insanely fragmented at this point that it can't satisfy basic program
needs? Is the 30MB clearance (nearly 20%) possibly not enough? Are there
any tools that will show or visualize virtual memory fragmentation?
What else could the problem be?
Thanks,
John