java - 确定任何 webapp 和独立应用程序所需的 -Xmx 和 -Xms 的最佳方法

Posted

技术标签:

【中文标题】java - 确定任何 webapp 和独立应用程序所需的 -Xmx 和 -Xms 的最佳方法【英文标题】:java - best way to determine -Xmx and -Xms required for any webapp & standalone app 【发布时间】:2011-08-10 04:02:45 【问题描述】:

我想知道如何确定独立应用以及在 tomcat 服务器上运行的 web 应用所需的堆大小。

在服务器上部署后如何判断。

谢谢。

【问题讨论】:

-Xmx 增加,直到没有内存溢出错误发生并且CPU使用率不受垃圾收集器支配。 【参考方案1】:

IBM 建议的用于调整 Java 堆大小的规则,它适用于 IBM SDK,但我认为其他 SDK 的这些设置不会有太大差异。

调整 Java 堆的大小,以使您的应用程序以最小的堆运行 使用率为 40%,最大堆使用率为 70%。

【讨论】:

【参考方案2】:

您可以从分析内存使用情况开始。例如,JDK(6 以上)有其Visual VM。我个人更喜欢的一个工具是Eclipse Memory Analyzer,最初来自 SAP,现在已经开放。您可以分析堆转储或将其连接到您选择的 Java 进程。要以编程方式创建堆转储,您可以使用 this

【讨论】:

【参考方案3】:

我们在 VM 上使用 -Xloggc:gc-log.txt-XX:+PrintGCdetails 选项并让它在高 Xmx 设置下运行一段时间(几天),然后您可以使用 GCViewer 从日志中呈现图表并获得想法什么时候消耗了多少 RAM,即是否有峰值、达到限制、GC 负载减慢 App 的速度等。

【讨论】:

以上是关于java - 确定任何 webapp 和独立应用程序所需的 -Xmx 和 -Xms 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

教程HTML5移动应用(WebApp)开发入门经典

分析 Java WebApps

Java webapp中的病毒扫描?

java - 独立应用程序的数据源 - 没有应用程序服务器

Instrumentation接口详解

如何在独立的 Java 程序中获取我的 Web 应用程序中的 Spring Application 上下文