2012-10-15 54 views
5

我已经使用ssh连接到基于linux的服务器。最近,我已经安装了JDK使用下面的命令:如何解决'VM初始化过程中发生错误'java?

sudo yum install java-1.6.0-openjdk-devel

和JDK安装成功,但每当我运行命令javajavac我收到以下错误:

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

即使运行命令java -version ,会带来这个错误。当我试图给Java的使用java -Xmx512m -Xms256m -version更多的空间,我会得到以下错误:

*** glibc detected *** java: double free or corruption (!prev): 0x00007fc84400e270 *** 
*** glibc detected *** java: double free or corruption (fasttop): 0x00007fc8440089f0 *** 
# 
Aborted (core dumped) 

我怎样才能解决这个问题?

在此先感谢

+0

尝试'哪个java'来查看哪个java正在运行?可能它没有运行到正确的?或者直接从它的bin目录执行java? –

+2

你对内存有限制吗?什么样的Linux? RHEL,Fedora?运行'$ uname -a'并将输出添加到问题中。 ''ulimit -a'也会有所帮助 – user1516873

+0

我很担心那个glibc信息... – Shark

回答

2

我从来没有见过这种例外,所以这是我最好的猜测:你是否试图限制stack size by using -Xss JVM parameter(即-Xms8m -Xmx16m -Xss4m)?另外,快速使用Google提示export MALLOC_CHECK_=0可能会让您轻松过期,但我不确定JVM是否能正常运行。

-1

看起来你正在使用JDK 32位版本。如果是这样,你不能分配超过1.2GB或什么的堆大小。

要么使用64位JDK,要么使用1.2G作为最大堆大小。

+0

但我没有使用超过1.2GB的堆,我使用了-Xmx512m,这意味着在最大时使用512MB堆。 –

1

虚拟Linux服务器? 你做什么时运行:

的Java -Xmx1m -version

的ulimit -a

看起来像一个内存分配问题。如果可能,您可以尝试增加交换空间。

1

对我来说,它看起来像没有足够的内存来运行虚拟机(可能是物理内存,虚拟内存或ulimit) - 你应该尝试减少分配给虚拟机的内存(我认为默认是64Mb),而不是增加它。

+0

java -Xmx3000m -Xms3000m 虚拟机初始化期间发生错误 无法为对象堆预留足够的空间 错误:无法创建Java虚拟机。 甚至更​​大的值会使VM崩溃 – thedayofcondor

0

降低您的-Xms(不是xmx)。例如,使用-Xms40m。如果它以其他答案中的说明开始,则您可能内存太低而无法在启动时为vm回收256m。

相关问题