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 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章