![Glassfish v3 启动时失败。“无法分配内存”](https://linux22.com/image/537712/Glassfish%20v3%20%E5%90%AF%E5%8A%A8%E6%97%B6%E5%A4%B1%E8%B4%A5%E3%80%82%E2%80%9C%E6%97%A0%E6%B3%95%E5%88%86%E9%85%8D%E5%86%85%E5%AD%98%E2%80%9D.png)
这个问题很清楚
但就我而言,我有一个 512M 内存的 Ubuntu 10.04 vps。似乎我不需要更改任何配置。但是当启动服务器时,我得到了这个异常
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
的结果猫/ 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
谢谢
答案1
请记住,Java 要求从一个连续的内存空间中分配堆空间,因此您的内存可能会碎片化到进程无法获取足够大的空间来初始化的程度(尽管它不会分配-Xmx甚至-Xms立刻占用大量内存。
请参阅此 stackoverflow 帖子,了解一个潜在的解决方案:
如何解决调用 Runtime#exec() 时出现“java.io.IOException:error=12,无法分配内存”?