title: JVM is not releasing the virtual memroy
body: <p>My web application is throwing OOM errors. It was given 25GB memory. Application was loaded tested and we see thet memory is ramping up. But I expect the JVM to release the memory after full gc. How come JVM is not releasing the virtual memory even after the application is used. </p>
  
  <p><b>Here are the JVM settings:</b></p>
  
  <pre><code>-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/logs/gcc.log 
  -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC
  -XX:+CMSIncrementalMode -XX:+UseCompressedOops -XX:+UseCompressedStrings
  -Xmx30g
  </code></pre>
  
  <p><b>Here is the "top" command output:</b>
      <pre>
  top - 02:09:42 up 117 days,  5:24,  4 users,  load average: 0.00, 0.01, 0.05
  Tasks: 140 total,   1 running, 139 sleeping,   0 stopped,   0 zombie
  Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
  Mem:  62167808k total, 60854992k used,  1312816k free,    73444k buffers
  Swap:        0k total,        0k used,        0k free, 17789504k cached
      </pre>
      <pre>
  PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  17206 java     20   0 55.1g  40g  12m S  0.3 68.2 298:41.08 java
      </pre></p>
  
  <p><b>Here is the "free" command output:</b>
      <pre>
               total       used       free     shared    buffers     cached
  Mem:      62167808   60855448    1312360          0      73592   17789532
  -/+ buffers/cache:   42992324   19175484
  Swap:            0          0          0
      </pre></p>
  
  <p>Please appreciate any leads to fix this issue.</p>