2011-06-04 41 views
3

我正在運行帶有256MB RAM的服務器。我可以爲Java分配的最大堆大小爲110MB。當我將這些參數添加到JAVA_OPTS時,我可以運行java -version。問題是我不能用這些參數運行Tomcat。 Tomcat運行的最大堆大小爲40MB。我不知道爲什麼我不能分配更多的內存?Tomcat問題 - 無法預留足夠的空間

當然,我得到錯誤:

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

你確定有足夠的內存空間保留這個堆的大小嗎?檢查服務器上的可用內存空間。 – 2011-06-04 08:42:39

+0

我的主要問題是:爲什麼我無法爲Tomcat堆大小分配110MB,如果我可以爲Java執行此操作? – ZenQW 2011-06-04 08:57:48

回答

2

套裝CATALINA_OPTS-Xmx110mJAVA_OPTS。我想你可以確定這兩者。

+0

我也嘗試將CATALINA_OPTS設置爲-Xmx110m,並且出現錯誤。 – ZenQW 2011-06-04 08:56:23

1

錯誤消息表明您沒有足夠的可用RAM嘗試關閉其他應用程序並查看是否可以分配更大的堆。恐怕你可能需要更多的RAM。

+0

我的服務器上只有一個應用程序。沒有其他進程正在運行。 – ZenQW 2011-06-04 08:55:37

+0

這很奇怪你在運行什麼操作系統? – 2011-06-04 13:24:16

2

當您使用-version標誌運行java可執行文件時,可能會忽略Xmx標誌。這取決於你如何傳遞版本標誌。以下是我機器上的結果,擁有2GB RAM:XMX

C:\Users\Reynolds>java -version -Xmx10240M 
java version "1.6.0_21" 
Java(TM) SE Runtime Environment (build 1.6.0_21-b07) 
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing) 

這是奇怪的考慮到10G超出了最大可尋址限制的內存在32位環境之前

版本標誌傳遞。

版本標誌XMX

C:\Users\Reynolds>java -Xmx10240M -version 
Invalid maximum heap size: -Xmx10240M 
The specified size exceeds the maximum representable size. 
Could not create the Java virtual machine. 

C:\Users\Reynolds>java -Xmx1524M -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

更接近現實後通過。

您可能想要使用第二種方法驗證Java中實際可用的連續內存量,然後確定最大堆大小的最佳值。

+0

我認爲這是合理的,假設'java -version'實際上並不創建JVM – 2011-06-04 12:34:23

+0

@matt,但事實並非如此。在Oracle/Sun JVM中,它實際上執行'sun.misc.Version'類的print()方法。 – 2011-06-04 12:44:30

相關問題