Why does the JVM consume less memory than -Xms specified?
garbage-collection, java, jvm, linux
Solution
You're looking at the resident memory - that is, the physical RAM consumed. See here for more info.
The virtual memory, however, is the memory consumed by your application, including the memory swapped out (to disk). You'll see there's a closer correspondance with the virtual memory and your `-Xms` settings.
See this ServerFault answer for more info.
Problem
My question is as the title, and I got some knowledge by searching: linux has shared memory How to measure actual memory usage of an application or process? JVM will reserve the amount of memory setted in Xms What does the -Xms JVM mean in reference to heap memory? But still don't know why, some on can offer some help? Here is my test run on Ubuntu12.04(64bit) | JDK 1.7.0_04. and top shows below: ``` PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4067 brian 20 0 5316m **262m** 7496 S 0 3.3 0:00.30 java -**Xms4096m** -Xmx4096m Test 4066 brian 20 0 3182m **256m** 7496 S 0 3.3 0:00.30 java -**Xms2048m** -Xmx2048m Test 4065 brian 20 0 2114m **252m** 7492 S 0 3.2 0:00.30 java -**Xms1024m** -Xmx1024m Test 4064 brian 20 0 1314m **76m** 7584 S 0 1.0 0:00.20 java -**Xms256m** -Xmx256m Test 4063 brian 20 0 1180m **51m** 7608 S 0 0.7 0:00.21 java -**Xms128m** -Xmx128m Test ```