2011-07-12 84 views
4

我在cataina.sh file 设置CATALINA_OPTS="-Xms2048m -Xmx2304m"和Linux操作系统将与JVM堆大小2048米(2GB)在Linux上安装Tomcat来2304米(2GB + 256MB) 有RAM 让我的8GB请大家帮忙一下Tomcat的内存消耗

  • tomcat应该直接从OS中消耗2GB吗?
  • 如果不是以上,那么应该花多少钱?
  • 如果tomcat占用的内存小于2GB,那么这个由tom为这个tomcat分配的2GB内存仅仅用于这个或者某些应用可以使用这个内存?
  • 最后我们设置这个最大和最小内存,意味着OS为tomcat分配所有这些内存量?

回答

8

JVM将预先分配您为-Xms指定的任何内存。所以,它会在启动时请求并分配2GB的内存。如果以后需要更多的内存(最大为-Xmx),JVM将向操作系统请求更多的内存。

但是,你知道你需要这么多的记忆吗?内存消耗的主要驱动程序将是您的应用程序而不是 Tomcat。带有几个servlet或JSP的简单Web应用程序可以轻松运行在小于32MB的堆中。您需要测量性能/负载的应用程序以确定最佳设置。

附注 - 用于设置JVM参数的首选方法是使用setenv.sh中的JAVA_OPTS设置,而不是catalina.sh。

+0

感谢您的回复。昨天我部署了tomcat以上的设置,我发现tomcat从linux top命令只取得200MB-300MB的内存,而不是2GB的内存。 SO应该得出结论,2GB是保留内存,没有分配。请帮助这个 – ajduke

+0

我认为JVM可能没有选择-Xms/-Xmx设置。尝试将它们移到setenv.sh中的JAVA_OPTS。 – AngerClown

+0

没有JVM正在拾取路径参数,我通过jvisualvm检查。它从jvisualvm占用2GB,但操作系统只显示200MB-300MB。 – ajduke