我正在一个运行CentOS 5.4的大型EC2示例上运行一个tomcat 6示例。该盒子有7. 5GB的RAM,专门用于运行tomcat。
我试图给予盒子6GB的内存使用它的最大堆。但是我一直得到这个错误:
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),当我运行免费时,我也有这个数量的免费:
[tomcat@producer1:/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米。这看起来小得不合理。有人有什么想法吗?谢谢
1条答案
按热度按时间unhi4e5o1#
您是否安装了64位JDK?如果您使用的是32位JDK,它最多可以访问4GB(理论上)。因为您计划使用6 GB,所以您需要64位JDK。再加上您有7.5G,6 GB是一个很小的数目。CentOS需要一些内存用于内核,处理其他服务,从这里交换内存。
因此,从5G开始增加堆的大小来尝试错误。JDK需要额外的内存,比如permgenspace(通常是128 M-512 M,取决于你有多少个库/类加载器)。
请参阅:http://benjchristensen.com/2007/02/16/32-bit-versus-64-bit-jdk-memory-usage/