繁体   English   中英

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

[英]'Could not reserve enough space for object heap' when running java -version

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

在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 )要使用多少内存?
  • 简单地分配更多的虚拟内存是否可以很好地解决该问题?

我有同样的问题。 通过分析,我们发现机器的交换空间很小。 请增加交换空间并进行验证。

正如我在遇到类似问题时发现的那样(尽管系统上的内存更少-请参阅无法在具有大堆大小的64位Windows 7中运行64位JVM ),在Windows上,JVM将尝试分配连续的内存块。

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

至少要看到运行Java版本的java -Xmx64m -version,这将在需要时向您显示版本。 然后,您可以尝试增加Xmx并查看其失败的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM