0

I am running centos 6.4 with 2.6.32-358.6.2.el6.x86_64 which is actually running as a xen vm with

ram 2 GB

On this i have set

cat /proc/sys/vm/overcommit_memory  
2

But when i try to start my java application its showing

java.io.IOException: Cannot run program "/bin/bash": java.io.IOException: error=12, Cannot allocate memory
Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory

But actually this machine has 1.5 gb free memory.

when i set

echo 0 > /proc/sys/vm/overcommit_memory

Everything is working fine,

i thought over committing memory allow me to use more virtual ram(swap+real ram),but why its failing even with more free real ram.

1 Answers1

3

From this guide:

2 — The kernel fails requests for memory that add up to all of swap plus the percent of physical RAM specified in /proc/sys/vm/overcommit_ratio. This setting is best for those who desire less risk of memory overcommitment.

If you have less than 2 GB of swap, then the kernel will deny the request if overcommit_ratio is set too low. Having it set to "1" allows overcommitting and is good for performance.

Nathan C
  • 15,223