运行java -version时“无法为对象堆保留足够的空间”

时间:2013-02-17 22:46:07

标签: java memory windows-server-2008 virtual-memory

我知道这是一个常见的问题/问题。我想知道从哪里开始。

在Windows Server 2008上运行java,我们有65GB内存,它显示25GB免费。 (目前有几个人在运行流程)。

systeminfo | grep -i memory

所示:

Total Physical Memory: 65, 536 MB
Available Physical Memory: 26,512MB
Virtual Memory: Max Size 69,630 MB
Virtual Memory: Available 299 MB
Virtual Memory: In Use: 69, 331 MB. 

真的只是想知道我是如何解决这个问题的。

  • 我从哪里开始?
  • 更多虚拟内存是什么意思 使用比物理内存,这是为什么java不会启动?
  • 是否 java想要使用虚拟内存而不是物理内存?

java -version

给了我:

Error occured during initialization of VM could not reserve enough space for object heap

更具体的问题:

  • 为什么JVM不想使用免费的音乐记忆?
  • 如果不指定Xms参数,java命令(如java -version)想要使用多少内存?
  • 只需分配更多虚拟内存就可以很好地解决问题吗?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。从分析中,我们发现机器的交换空间很小。 请增加交换空间并验证。

答案 1 :(得分:0)

正如我发现当遇到类似问题时(虽然系统内存少得多 - 请参阅Cannot run a 64-bit JVM in 64-bit Windows 7 with a large heap size),但在Windows上,JVM将尝试分配连续的块记忆。

所以我敢打赌,虽然你有足够的内存,但你没有足够的连续的内存。

答案 2 :(得分:0)

至少看java版本运行 java -Xmx64m -version 如果需要,这应该显示版本。然后你可以尝试增加Xmx并查看它失败的值