【问题标题】:Max Heap Size for Tomcat 6 on 64 bit CentOs?64 位 CentO 上 Tomcat 6 的最大堆大小?
【发布时间】:2011-07-12 02:17:21
【问题描述】:

我正在运行 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.

当我减少我给它的内存量时,我开始收到这个错误:

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

我最多可以给它3000m。这似乎小得不合理。谁有想法? 谢谢

【问题讨论】:

  • get 64bit java :) 也打印 java -version 帮助很多!
  • 所有组件都是 64 位的吗? JDK/Tomcat?
  • 如何检查您的 JVM 是否为 64 位? java 版本 "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)

标签: java tomcat centos heap-memory ram


【解决方案1】:

您是否安装了 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/

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2013-02-12
    • 2012-04-30
    • 2011-10-18
    • 2011-01-09
    • 1970-01-01
    • 2011-10-29
    • 2014-02-02
    • 2014-03-14
    相关资源
    最近更新 更多