Tomcat 内存消耗
Posted
技术标签:
【中文标题】Tomcat 内存消耗【英文标题】:Tomcat Memory Consumption 【发布时间】:2011-10-03 12:57:01 【问题描述】:我将在 Linux 上安装 Tomcat,JVM 堆大小为 2048m(2GB) 到 2304m(2GB+256MB)
通过在cataina.sh file
中设置CATALINA_OPTS="-Xms2048m -Xmx2304m"
Linux 操作系统有 8GB 的 RAM
所以我提出了一些观点,请帮助解决这个问题
【问题讨论】:
【参考方案1】:JVM 将预先分配您为-Xms
指定的任何内存。因此,它将在启动时请求并分配 2GB 的内存。如果以后需要更多内存(最多-Xmx
),JVM 会向操作系统请求更多内存。
但是,你知道你需要这么多内存吗?内存消耗的主要驱动力将是您的应用程序而不是 Tomcat。带有少量 servlet 或 JSP 的简单 Web 应用程序可以轻松地在不到 32MB 的堆中运行。您需要测量应用程序的性能/负载以确定最佳设置。
附注 - 设置 JVM 参数的首选方法是使用 setenv.sh
中的 JAVA_OPTS
设置,而不是 catalina.sh。
【讨论】:
感谢您的回复。昨天我使用上述设置部署了 tomcat,我发现 tomcat 只占用了 linux top 命令的 200MB - 300MB 内存,而不是 2GB 内存。所以应该得出结论,2GB 是保留内存并且没有分配。请帮助解决这个问题 我认为 JVM 可能没有选择您的 -Xms / -Xmx 设置。尝试将它们移动到 setenv.sh 中的 JAVA_OPTS。 NO JVM 正在获取路径参数,我通过 jvisualvm 检查。它从 jvisualvm 占用 2GB,但操作系统仅显示 200MB -300MB。 我用 -Xms 1024M 启动了一个 JVM,我在顶部看到 VIRT=1104m 和 RES=168m。所以看起来进程请求了全部的虚拟内存,但实际上并没有触及所有这些以使操作系统物理分配它。以上是关于Tomcat 内存消耗的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 嵌入式 tomcat 服务器占用 800 MB 内存?