2

我对特定的应用程序或环境不感兴趣。尽管我现在在应用程序部署中遇到了这个问题,但我对更通用的解决方案感兴趣。

是否有一些关于在 Java 服务器上设置堆大小的规则?(特别是现在,我正在使用Tomcat 7)。使用-Xms-Xmx您可以指定堆大小的最小值和最大值。根据部署在服务器上的应用程序,如何知道要设置的最大和最小堆大小。是否有一种通用的方法来找到它,或者它是否更经验,与已部署的应用程序相关?- “与部署的应用程序相关”我的意思是您必须知道您的应用程序在做什么、数据库工作、用户界面工作或任何其他内存消耗者的事情。

4

2 回答 2

3

我在几家公司做过 java web app,对他们来说都是完全凭经验的。这主要取决于机器,而不是应用程序。例如,如果您有一台 4GB 的机器只有一个 tomcat 服务器,那么您允许它占用 3GB。如果服务器内存不足,您尝试修复它或购买更多内存...我认为这比花钱请人计算所需内存更便宜...

我觉得大公司也是这样,没有什么秘密……

于 2012-06-05T07:21:00.027 回答
2

这是经验性的 - 观察您的应用程序并查看它的行为方式。

还有更多内容 - 对于初学者,请阅读内存池以及如何调整它们的大小。如果您深入了解它,请查看http://www.javaperformancetuning.com/ - 有很多关于调整内存问题的材料等等。

现在,在通常情况下,您不应该为-Xms. 设置-Xmx为您的应用程序需要的任何值(观察,找出)。JVM 会在需要时增加内存池的大小,并相应地减少它们。只要确保,你没有得到OutOfMemoryErrors。然后,查看您的应用程序是否存在内存瓶颈(例如,完整的 GC 或长期停止世界阶段),并根据需要调整池的大小和/或配置 GC。

于 2012-06-05T07:23:38.520 回答