The operating system is running 10 virtual machines JVM. In fact, most do nothing - from time to time just doing a job. Each process allocates the 600MB of system memory. I know that practically up to 100 MB can be physically used. The remaining 500 MB for each of these processes is the memory managed by the JVM (OldGen etc). Unfortunately, my system has only 2GB of RAM and as a result most of the memory allocated land into the swap. This means that when the time comes to one of the machines - the first, swap is read to system memory for tens of seconds.
Is there any way to force the JVM to release memory to the operating system after completing the task? For example, the GC would run every 1-5 minutes and as a result process memory have been freed to the system.
I'm using: Linux x86_64 SMP, Java HotSpot (TM) 64-Bit Server VM 1.6.0