Solution 1:

Clear your ram cache with RAMMap's emptystandbylist option.

http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx

Alternatively, wj32 (writer of Process Hacker at sourceforge) has written a small cmdline app to do the trick. Find it in this thread.

http://forum.sysinternals.com/rammap-empty-standby-list_topic27297.html

Have not found a way to do this from Powershell yet, but if you are a good programmer you can find what you need in the source code of Process Hacker.

Solution 2:

Cache is largely adopted as a normal behavior in modern systems.

The general concept is that the system should actively and preemptively choose certain components DLLs, programs, sites, search results, and keep then in specific areas of memory marked as cache.

This concept as adopted because you system being awake, means that you are providing energy to keep this memory active, so you should use it all, all the time, but EVERY bit in a cached space, is immediately available if a process need it. Whee you starts a program and it says you haven't enough memory, that take into account that all cached memory could become free, but even in that case the memory your program need won't become available.

To solution your problem, you should search the program you are trying to run with the message you received.