just hypothesizing really... i've seen all these programs that free physical memory, etc, etc, and if i think about it, i don't see the point of running one all the time. sure, if you have a badly written program that doesn't release memory properly when it's finished, then a memory free-er could be useful. but to have memory free when other programs could be using it seems kinda silly. programs keep data they use often in memory while they're executing, so that it doesn't need to be loaded from the hdd. freeing the memory all the time would inhibit this, if you think about it.
"cache" is typically used to describe the onchip memory that store data that is frequently used by the program currently executing within the processor. cache->processor register data transfers are much faster than memory->cache->register transfers, obviously, and those in turn are much faster than getting data from virtual memory. but that's a different story altogether.
shed any light for ya?