我正在使用-server jvm选项测试我的tomcat服务器4。我的JDK在FreeBSD上是1.5。
我没有看到任何明显的差异或任何问题。如果我要在我的产品系统上启用此选项,我可以期待什么样的改进以及我应该注意哪些问题?
我已阅读What's the effect of -server option for the HotSpot JVM?,但未对此进行详细讨论。
答案 0 :(得分:3)
JVM很可能已经在服务器模式下运行。对于Linux上的JDK 5/6,JVM将在服务器级机器上默认为服务器模式:
“[...]服务器级计算机的定义是至少有2个CPU和至少2GB的物理内存。”
FreeBsd上没有说明会发生什么,但我认为FreeBsd JVM只是服务器模式,或者它们在服务器级机器上默认为服务器模式,就像Linux一样。
答案 1 :(得分:2)
诀窍是现代JVM可以“自动检测”类似服务器的机器。因此,如果您未指定-server
或-client
,JVM1.5 +将选择最佳方法 - 即使您不使用该属性,它也可能会在服务器模式下运行。
在这种情况下,如果使用-client
选项启动JVM,您可能会注意到不同。
<强>参考强>
答案 2 :(得分:1)
服务器模式的第一个区别是打开并行GC,它是一个吞吐量垃圾收集器,推荐用于多核机器。一般来说,它会为您提供更短的垃圾收集延迟。
其次,服务器模式将在JIT中使用更积极的优化。
我认为服务器模式是生产机器必备的。
我建议你切换到1.6 JVM,因为它有更好的gc实现,并且更好地进行了优化。
答案 3 :(得分:0)
OTN website讨论了差异。我们很少在任何生产系统中使用默认参数(GC收集算法,堆大小等),因此它不会提供太大的提升。
在实现此参数后,您没有需要注意的任何具体事项,但如果您看到-server和-client之间存在差异,那么JIT编译器始终是一个好的起点。
答案 4 :(得分:-2)
由于不同的垃圾收集和其他参数,您会注意到长期的差异。