I'm not sure about all JVM implementations but as far as I remember, I checked only my JDK6/7 on Fedora but worked also with Sun/HP, the OS will allocate the amount of -Xms and increase it very fast if you load big applications.
But it need a bit warmup to reach -Xmx, also it is possible that the JVM free memory if the servers throughput is less in off-peak phases.
So I strongly agree to Peter's statement how to set the parameter in dev/prod.
What you should never do is to set the sum of all servers (-Xmx + -MaxPermSize + ThreadStackSize) to an amount near or above the physical memory. This will end up in a worst performance because of swapping.