Glassfish v3启动时失败。 “不能分配内存”

这个问题很清楚

https://serverfault.com/questions/210275/fail-to-start-glassfish-3-1-java-io-ioexception-error-12-cannot-allocate-mem

但在我的情况下,我有一个512M的内存Ubuntu 10.04 VPS。似乎我不需要改变任何configuration。但是当启动服务器时,我得到了这个exception

VM failed to start: java.io.IOException: Cannot run program "/usr/lib/jvm/java-6-sun-1.6.0.22/bin/java" (in directory "/home/glassfish/glassfish/domains/domain1/config"): java.io.IOException: error=12, Cannot allocate memory 

所以,我设定了

 <jvm-options>-Xmx512</jvm-options> 

 <jvm-options>-Xmx400</jvm-options> 

例外仍然存在。我做了什么错事?

免费-m的结果

  total used free shared buffers cached Mem: 512 43 468 0 0 0 -/+ buffers/cache: 43 468 Swap: 0 0 0 

cat / proc / user_beancounters的结果

 Version: 2.5 uid resource held maxheld barrier limit failcnt 146049: kmemsize 2670652 5385253 51200000 51200000 0 lockedpages 0 8 2048 2048 0 privvmpages 11134 134522 131200 262200 4 shmpages 648 1352 128000 128000 0 dummy 0 0 0 0 0 numproc 12 73 500 500 0 physpages 6519 28162 0 200000000 0 vmguarpages 0 0 512000 512000 0 oomguarpages 6527 28169 512000 512000 0 numtcpsock 4 14 4096 4096 0 numflock 0 5 2048 2048 0 numpty 1 2 32 32 0 numsiginfo 0 3 1024 1024 0 tcpsndbuf 159600 265744 20480000 20480000 0 tcprcvbuf 65536 3590352 20480000 20480000 0 othersockbuf 44232 90640 20480000 20480000 0 dgramrcvbuf 0 12848 10240000 10240000 0 numothersock 22 31 2048 2048 0 dcachesize 0 0 10240000 10240000 0 numfile 1002 1474 50000 50000 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 24 24 2048 2048 0 

谢谢

请记住,Java要求从一个连续的内存空间分配堆空间,所以你的内存可能会被分割,以至于进程无法获得足够大的空间来初始化(尽pipe它不会分配-Xmx甚至是– Xms的记忆量就在蝙蝠身上。

看到这个stackoverflow后,一个潜在的解决scheme:

如何解决“java.io.IOException:错误= 12,无法分配内存”调用运行时#exec()?