Java Client VM和Server VM有什么区别?

时间:2011-08-31 08:17:05

标签: java

  

可能重复:
  Real differences between "java -server" and "java -client"?

使用-server和-client标志启动java程序有什么技术差异?

谢谢!

2 个答案:

答案 0 :(得分:3)

来自Frequently Asked Questions About the Java HotSpot VM

  

这两个系统是不同的二进制文件。他们基本上是两个   不同的编译器(JIT)连接到同一个运行时系统。该   客户端系统最适合需要快速启动的应用程序   时间或小的脚印,服务器系统是最佳的   整体性能最重要的应用。在   一般来说,客户端系统更适合交互式   GUI等应用程序。其他一些差异包括   编译策略,堆默认值和内联策略。

答案 1 :(得分:2)

我所知道的一个区别与JIT (Just In Time)编译有关,其中运行时的JVM识别代码中的热点,并基于此将字节码转换为高度优化的本机代码。

使用-client标志,执行JIT的数量少于使用-server标志执行的数量。这是因为客户端是通常需要较低启动时间的交互式应用程序,而JIT会导致一些启动延迟。您可以在此处阅读有关JIT的更多信息:http://en.wikipedia.org/wiki/Just-in-time_compilation

另外,我认为(不太确定)通过这些标志的更改选择的垃圾收集默认值会有所不同。