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

7

我想知道如何确定一个独立应用程序和运行在Tomcat服务器上的Web应用程序所需的堆大小。

如何在部署到服务器后确定相同的大小。

谢谢。


-Xmx增加,直到没有内存不足错误发生且CPU使用率不被垃圾收集器所主导。 - Ingo
3个回答

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

要以编程方式创建堆转储,您可以使用此工具

4

IBM提出的规则是用于确定Java堆大小的,虽然这适用于IBM SDK,但我认为对于其他SDK的设置差别不大。

将Java堆的大小设置为使您的应用程序最小堆使用率为40%,最大堆使用率为70%。


1

我们在虚拟机上使用-Xloggc:gc-log.txt-XX:+PrintGCdetails选项,将其运行一段时间(几天)并设置高的Xmx值,然后您可以使用GCViewer从日志中呈现出图表,并了解消耗了多少RAM,即是否存在峰值、达到极限、大量GC导致应用程序变慢等情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接