2011-03-09 113 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/