2011-09-11 125 views
2

BEA建议保持最小和最大堆大小相同。他们没有详细说明建议的理由。有人可以提供细节吗?JVM最小堆大小推荐原因?

我也从建筑师的另一项建议,不设置任何最小值,只是设置最大值。对此有何评论?如果我不使用它,默认值是什么?

什么是监视和调整JVM设置的最佳工具。我在BEA weblogic 10g上使用JDK1.6。它在Linux 32位JVM上。

是否将最大堆大小设置为2GB有什么好处?服务器有很多RAM。目前它设置为1.5GB,当有40个并发用户时,它的使用率为80%。 谢谢,

回答

1

当JVM需要增加堆的大小时,它会调用一个完整的垃圾回收,这可能会降低吞吐量或导致暂停,所以我认为这是他们推荐的性能原因。

默认值为documented为2MB,所以如果您不覆盖它,您可能会在启动后获得很多(可能非常快)的完整集合,因为堆经常会调整大小。

除非您试图保持内存占用尽可能小,否则我会遵循BEA的建议。

如果2GB是合适的,或者如果使用空间的对象仍然在范围内,那么不可能从所给出的信息中说出 - 老一代会逐渐填满,直到完全收集时空间不足将被调用。这个80%的数字来自哪里?

使用以下JVM参数登录GC细节,一个名为gc.log:

-verbose:gc -XX:+PrintGCDetails -Xloggc:gc.log 

然后你就可以分析这个使用类似http://www.tagtraum.com/gcviewer.html