2011-03-09 49 views
3

我在運行CentOS 5.4的大型EC2實例上運行一個tomcat 6實例。 這個盒子有7.5gb的RAM,專門用來運行tomcat。64位CentOs上的Tomcat 6的最大堆大小?

我想給出6GB的RAM用於它的最大堆。不過,我不斷收到此錯誤:

Invalid maximum heap size: -Xmx6144m 
The specified size exceeds the maximum representable size. 

正如我滴的RAM量,我給它,我開始收到此錯誤,而不是:

Error occurred during initialization of VM 
Could not reserve enough space for object heap 

即使在應用程序運行(與xmx3000m)當我運行免費我有這個數額免費:

[[email protected]:/usr/share/tomcat/logs] $free 
      total  used  free  shared buffers  cached 
Mem:  7864320 1512736 6351584   0  179948  702352 
-/+ buffers/cache:  630436 7233884 
Swap:   0   0   0 

我能給它最多的是3000米。這似乎不合理地小。有人有主意嗎? 謝謝

+2

得到64位的Java :)也打印Java的版本可以幫助一噸! – bestsss 2011-03-09 17:20:35

+0

你所有的組件是64位的嗎? JDK/Tomcat的? – Pushkar 2011-03-09 17:21:36

+0

如何檢查您的JVM是否是64位? Java TM版本「1.6.0_17」 Java(TM)SE運行時環境(版本1.6.0_17-b04) Java HotSpot TM服務器VM(版本14.3-b01,混合模式) – matsientst 2011-03-09 17:24:49

回答

3

您是否安裝了64位JDK?如果您使用32位JDK,則可以最大限度地訪問4GB(理論上)。 由於您計劃使用6GB,因此您需要64位JDK。除此之外,因爲你有7.5G,6GB是一個緊湊的不。 CentOS需要一些內存來處理內核,處理其他服務,從這裏交換內存。

因此,通過從5G開始增加堆大小來嘗試&錯誤。 JDK需要額外的內存超出堆像permgenspace(通常是128M - 512M取決於你有多少個庫/類加載器都有)

參考:http://benjchristensen.com/2007/02/16/32-bit-versus-64-bit-jdk-memory-usage/

相關問題