可能重复:
";java服务器";以及";java客户端"?
用-server和用-client标志启动java程序在技术上有什么区别?
谢谢!
来自Java HotSpot VM:常见问题解答
这两个系统是不同的二进制文件。它们本质上是两个与同一运行时系统接口的不同编译器(JIT(。这个客户端系统是需要快速启动的应用程序的最佳选择时间或较小的占地面积,服务器系统对于整体性能最重要的应用程序。在里面一般来说,客户端系统更适合交互式诸如GUI之类的应用程序。其他一些差异包括编译策略、堆默认值和内联策略。
我所知道的一个区别与JIT (Just In Time)
编译有关,其中JVM在运行时识别代码中的热点,并以此为基础将字节码转换为高度优化的本机代码。
使用-client
标志时,执行的JIT’ing的量小于使用-server
标志时执行的JIT'ing的量。这是因为客户端是交互式应用程序,通常需要较低的启动时间,而JIT'ing会导致一些启动延迟。您可以在此处阅读有关JIT的更多信息:http://en.wikipedia.org/wiki/Just-in-time_compilation
此外,我认为(不太确定(随着这些标志的更改,选择的垃圾回收默认值会有一些不同。