By default, Vista (and later) x86 will only allow 2 GB of virtual memory for each process. If one application needs more, for example 3GB, you can increase this by :
bcdedit /set IncreaseUserVa 3072
However this will only work for executables that were linked with the "large address aware" flag. Processes running other exe's will still be limited to 2 GB.
Real RAM is allocated as required for both applications and the system.
As this doesn't seem to be your problem, then to optimize the usage of memory one can first Disable SuperFetch on Windows Vista :
The SuperFetch service in Windows
Vista preloads your system’s memory
with the applications that you use
most often. This makes launching of
those applications much faster, but it
might be an unwanted behavior for
system tweakers or gamers.
Secondly, to control the disk cache size, AnalogX CacheBooster is a free tool that is said able to tweak the hard disk cache (never tried it myself), but I'm not sure that it will help, in view of the info below.
As described in Windows Vista Memory Tweak Guide, the disk cache parameters reside in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management
Some important parameters are :
DisablePagingExecutive controls how inactive kernel-mode drivers and system code can be released from RAM and paged to the Page File. Unfortunately, you don't have a page file so system code never gets swapped out.
LargeSystemCache controls the size of the file system cache as follows:
- 0 (Default) a standard sized file system cache is allocated (less than 10MB RAM)
- 1 enables the use of a large file system cache (up to total RAM amount minus 4MB!)
If this value is zero in your case, then the disk cache is already as small as it can get. If the performance you get is not satisfying, then you must invest in hardware : either more RAM or a faster hard disk. Increasing RAM from 3GB to 4GB will only get you an increase of (1GB - video-memory), unless you also pass to a 64-bit version of Windows.