我正在运行CentOS 5.4的大型EC2实例上运行tomcat 6实例。 该盒子有7.5GB的RAM,专用于运行tomcat。
我正在尝试将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),当我免费运行时,我还有这个数额免费:
[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米。这似乎不合理地小。有人有主意吗? 感谢
答案 0 :(得分:3)
您是否安装了64位JDK?如果您使用的是32位JDK,则最大可以访问4GB(理论上)。 当你计划6GB时,你需要64位JDK。除此之外,因为你有7.5G,6GB是紧的没有。 CentOS需要一些内核用于内核,处理其他服务,SWAP内存。
所以试试看吧通过从5G开始增加堆大小的错误。 JDK需要超出堆的额外内存,如permgenspace(通常为128M - 512M,具体取决于您拥有的库/类加载器的数量)
请参阅:http://benjchristensen.com/2007/02/16/32-bit-versus-64-bit-jdk-memory-usage/