刚遇到奇怪的问题。当我输入
java -version
我得到了
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
java -Xms64m -Xmx64m -version
此命令正常
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
如果我将xms,xmx更改为128m,我会再次收到错误。
使用top
命令和free -m
我可以看到,我有超过192 MB的空闲时间,为什么我仍然会收到此错误?
Mem: 262144k total, 64760k used, 197384k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
谢谢
答案 0 :(得分:14)
在64位环境中使用32位版本的java时遇到了同样的问题。在64 OS中使用64位java时没关系。
答案 1 :(得分:11)
看起来你试图运行它的机器只有256 MB内存。
也许JVM尝试分配64 MB内存的大型连续块。你有空的192 MB可能被分成小块,因此没有64 MB的连续块可以自由分配。
尝试使用较小的堆大小启动Java程序,例如:
java -Xms16m ...
答案 2 :(得分:5)
根据this post,此错误消息表示:
堆大小比计算机的物理内存大。
编辑:我想,堆不是唯一保留的内存。至少还有像PermGenSpace这样的其他JVM设置要求内存。堆大小为128M,PermGenSpace为64M,您已经填充了可用空间。
为什么不缩小其他内存设置以释放堆空间?