2012-10-15 73 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。

相關問題