JVM -server参数是什么?

32
我在编程语言基准测试网站http://shootout.alioth.debian.org/上看到了Java -server。 我知道-server是运行JVM时的一个参数。我想知道: 我们什么时候使用-server参数以及它是如何工作的? 我们能在Java桌面应用程序中使用这个参数吗? 谢谢。

顺便提一下,基准测试游戏机是"服务器级别的机器",因此这些是默认设置。显式的-server参数仅用于让所有人都能清楚地看到这些设置。 - igouy
如果-client-server是两种互斥的模式,那么这可能是https://dev59.com/Q3VC5IYBdhLWcg3wvT1a的重复。 - Ciro Santilli OurBigBook.com
4个回答

28
它只选择"Server Hotspot VM"。请参见文档(Solaris / Linux)中的java
根据维基百科:
Sun的JRE具有2个虚拟机,一个称为Client,另一个称为Server。Client版本针对快速加载进行调整。它使用解释器,仅编译经常运行的方法。Server版本加载更慢,投入更多精力产生高度优化的JIT编译,从而获得更高的性能。
参见:http://en.wikipedia.org/wiki/HotSpot

14

在启动器中,-server标志将表明硬件是服务器级别机器,对于Java 6来说,这意味着至少有2个内核和至少2 GB物理内存(即大多数现代机器)。在服务器级别的机器上,默认选择为:

  • 吞吐量垃圾收集器。
  • 初始堆大小为物理内存的1/64,最高可达1 GB。
  • 最大堆大小为物理内存的1/4,最高可达1 GB。
  • 服务器运行时编译器。

请注意,在32位Windows上没有服务器VM,因此客户端VM是默认选项。在其他32位机器上,如果硬件是服务器级别,则选择服务器VM,否则是客户端VM。在64位机器上,没有客户端VM,因此服务器VM是默认选项。

热点常见问题解答链接:HotSpot


我曾经认为32位Windows上服务器模式?我们以这种方式运行我们的生产代码多年(通过选择-server),直到我们转向Linux。 - Fortyrunner
嗯,我现在找不到参考资料了,但是我记得-java 5及以后的win32版本中-server标志只是被忽略了。但我可能是错的,特别是因为我找不到参考资料。 - Erik

2

0

1
虽然这个回答在理论上可能是正确的,但最好还是在这里包含回答的关键部分,并提供链接作为参考。 - Matt Ball

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