可能重复:
Real differences between "java -server" and "java -client"?
使用-server和-client标志启动java程序有什么技术差异?
谢谢!
答案 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
另外,我认为(不太确定)通过这些标志的更改选择的垃圾收集默认值会有所不同。