使用-server JVM选项运行tomcat

4

我正在测试我的Tomcat服务器4,使用-server JVM选项。我的JDK是FreeBSD上的1.5版本。

我没有看到任何明显的差异或问题。如果我要在生产系统上开启此选项,我可以期望什么样的改进和需要注意哪些问题?

我已经阅读了What's the effect of -server option for the HotSpot JVM?,但它没有详细讨论这个问题。


建议使用Tomcat 6和JDK 6。 - Harry Joy
@Harry Joy - 我希望我能够:( - Nishan
5个回答

3
很可能JVM已经在服务器模式下运行。对于Linux上的JDK 5/6,JVM会默认在服务器级别机器上运行:

"[...] 服务器级别机器的定义是至少具有2个CPU和至少2GB物理内存。"

文档记录在这里(Java 6在这里)。

没有明确说明FreeBsd会发生什么,但我希望FreeBsd的JVM只能以服务器模式运行或者在服务器级别机器上默认使用服务器模式,就像Linux一样。


我正在使用JDK 1.5。http://www.oracle.com/technetwork/java/ergo5-140223.html说自从1.5版本以来,服务器级别的机器上JVM默认处于服务器模式。所以我想我不需要显式地打开它。 - Nishan

2
现代JVM可以“自动检测”服务器类机器。因此,如果不指定-server-client,JVM1.5+会选择最佳方法 - 即使您不使用该属性,它也可能在服务器模式下运行。
在这种情况下,如果使用-client选项启动JVM,您可能会注意到差异。
参考链接:服务器类机器检测

1

服务器模式的第一个区别是启用并行GC,这是一种吞吐量垃圾收集器,适用于多核机器。通常情况下,它会为您提供更短的垃圾收集延迟。

其次,服务器模式将在JIT中使用更积极的优化。

我认为生产机器上必须拥有服务器模式。

我建议您切换到1.6 JVM,因为它具有更好的gc实现和更好的优化。


0

OTN网站讨论了这个区别。在我们的任何生产系统中,我们很少使用默认参数(GC收集算法、堆大小等),因此它并没有提供太多的帮助。

在实现此参数后,您不需要特别注意任何事情,但如果您发现-server和-client之间有差异,则JIT编译器始终是一个好的起点。


-2

由于不同的垃圾回收和其他参数,您将会在长期中注意到差异。


嗯...他不知道。这就是他的问题所在。 - Stephen C

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