from:
http://www.anandtech.com/guides/viewfaq.html?i=93
Many people are under the impression that adding another stick or two of RAM will increase the amount of System Resources available to Windows. This is a common misconception. System Resources are unrelated to the amount of RAM in your computer.
The term "resources" refers to two items: GDI resources and USER resources. When Windows returns a figure for available resources it gives you the lower of these two figures if they are different. WinNT, Win2K and WinXP use a different memory management structure, and so have no "resources" as such.
The GDI and USER resources are made up of 5 memory stack heaps under Win95, Win98, Win98SE and WinME.
USER comprises of one 16-bit heap (64KB in size) and two 32-bit heaps (2MB each). One of these 32-bit heaps stores WND (window) structures. This heap holds information regarding window such as metrics, positioning, colours, etc. The other 32-bit heap stores menus. The 16-bit heap stores various other items including window classes, and message queues.
The User component also manages input from the keyboard, mouse, and other input devices. It manages interaction with the sound driver, timer, and communications ports. Windows 98 uses an asynchronous input model for all input to the system and applications. As the various input devices generate interrupts, the interrupt handler converts these interrupts to messages and sends the messages to a raw input thread area, which in turn passes each message to the appropriate message queue. Although each Win32-based thread can have its own message queue, all Win16-based applications share a common one.
GDI comprises of one 16-bit heap (64KB in size) and one 32-bit heap (2MB in size). GDI uses its heaps to store fonts, brushes, fonts, palettes, bitmaps and pens (graphical objects).
The GDI (Graphic Driver Interface) is the graphical system that manages what appears on the screen. It also provides graphics support for printers and other output devices. It draws graphic primitives, manipulates bitmaps, and interacts with device-independent graphics drivers, including those for display and printer output device drivers.
These heaps are FIXED memory segments that CANNOT change in size, either through system/registry settings, or adding RAM.
Note that Windows 3.x had only one 16-bit heap for USER and one 16-bit heap for GDI.
Windows 9.x incorporates the Windows 64KB system-resource limit for better performance when it is providing backward compatibility.
Because of their fundamental nature at the core of Windows, the performance of these legacy 16-bit heaps has been improved by limiting their data to a single 64Kb segment of DOS memory (the Intel processors can access data from a 64Kb segment much faster than from a wider area). If either of these segments becomes full, programs may fail to load and Windows may become unstable - regardless of how much other free memory there is. Although the 32-bit heaps are 2MB large, the resource problem really lies with the 16-bit heaps, and so they do not present a problem.
Note that although the resources are unlimited for WinNT/2K/XP, they only apply to 32-bit programs. 16-bit programs are still subject to 32KB or 64KB limitations due to their system handles.
You should not really be concerned about the level of free resources. You can easily have resources drop to 15-20% without a problem. When Resources get below the 15% range, it is time to think about shutting down some programs.
Low resources are generally NOT a problem in and of themselves and low figures are not a cause for concern. Resources are there to be used. There is no performance penalty involved in using resources. Many systems will run without problems right down to 10% free, where Windows will then issue a warning that you may actually run out of resources. Windows’ performance appears to degrade in relation to resources, but this performance degradation is actually due to the swap file being hit due to insufficient RAM.
There are times that you should take notice of free resources, however. When you first boot up your computer, and before you open any software, look at the amount of resources available. If you see anything less than 75% of your resources free, you should examine what is running automatically on startup. Many preconfigured computers from stores, such as Compaq and HP systems, come with a large assortment of software that runs automatically in the background. Even though you may only see the icon beside the clock, this software can still consume quite a bit of your system resources. Many of these programs do not really need to be run at startup, so you should consider removing them from startup.
System resources should be reclaimed when the software that uses them is closed. In the case of 16-bit applications, all open 16-bit applications must be closed to recover system resources.
In a perfect world, the reclaiming of system resources would work without a hitch. However, the Win9x kernel is far from perfect. In addition there is loads of software available for the 9x platform that does a poor job of freeing resources when closed. It is also quite common for some Windows components to still be left open after a program is closed down. This is an intended behaviour of Windows, due to the fact that many of these components are frequently used and having them open speeds up the access times when they are needed again.
This means that after running Windows 9x for several days or weeks you may notice that the resources available still seem to spiral downward even after closing Unreal Tournament and those 10 Internet Explorer windows you have open. In this case the only way to free those lost resources is to reboot your computer.
The following, from PCForrest outlines various reasons for resources not returning to a free state:
Some programs will not release resources immediately; they will hold onto their resources for anything up to 15 minutes. Only when it is clear they are no longer needed will they be freed.
If you have shared resources being used by more than one 16-bit program, all of them must be closed to free these resources.
Using CTRL+ALT+DEL to close programs may leave resources behind. Always use the program's own Close method. This will ensure the program cleans up after itself (commonly known in the trade as a program's "tear-down"). CTRL+ALT+DEL will bypass many of these routines, so avoid using it whenever possible. CTRL+ALT+DEL is a last-resort solution.
Another exception is badly-written software. Even if you close the program by its internal method, there's no guarantee the author has implemented a comprehensive tear-down. Well-written software uses a logical tear-down. Badly written software may not have a complete tear-down, or may not have a tear-down at all. Best thing to do with such software is inform the author and discontinue using it.
Opening a program and then closing it before it has fully initialised or loaded may leave resources behind. Doing this repeatedly will eventually consume all available resources.
Leaving your PC running 24/7 will gradually reduce resources for all the reasons mentioned above. Therefore try to reboot at least once a week, preferably every day. Reboots can be scheduled to ensure the system is offline during your quieter periods (such as overnight).