You aren't using any swap space, so you probably aren't running out of memory.
Remember that UNIX (BSD, Linux) systems in general use all available memory as a disk cache. That's basically all that is happening here. There's really no concept of 'free' memory per-say... the cache and free values you see in the vmstat (or systat -vm 1) output are only used for short term memory cycling, e.g. when a program runs, eats some memory, and then exits. For all of these systems paging to swap is governed by the concept of memory pressure rather than memory use (since all of memory is 'used' one can't go by memory use). Memory pressure is produced when the set of running programs on the system try to use more memory in aggregate then is actually available, or at least enough memory that the kernel feels it cannot maintain a large enough disk cache. The kernel will then start paging to swap to try to clean up memory use. You can force this as a test you can compile up a little program called eatmem.c in /usr/src/test/stress/eatmem.c. This program allocates a ton of memory (specified in megabytes on the command line) and then touches it in a loop. You can use it to force the kernel to page stuff out :-). Then kill it and observe how well the system recovers. Be careful that you do not actually run your system out of memory + swap space or it will start killing things. -Matt