“java-server”和“java-client”之间的真正区别?

“java-server”和“java-client”之间的真正区别?

“java-server”和“java-client”之间有什么真正的实际区别吗?

我在Sun的网站上只能找到一个模糊的

“-服务器启动速度较慢,但应该运行得更快”。

真正的区别是什么?(目前使用JDK 1.6.0_07。)


largeQ
浏览 2189回答 3
3回答

繁花不似锦

这与热点和默认期权值 (Java热点VM选项)客户机和服务器配置之间的差异。从…第二章白皮书(Java热点性能引擎体系结构):JDK包括两种版本的VM-客户端产品和为服务器应用程序优化的VM。这两种解决方案共享Java HotSpot运行时环境代码库,但使用不同的编译器,这些编译器适合于客户端和服务器明显独特的性能特性。这些差异包括编译内联策略和堆默认值。虽然服务器和客户端VM是相似的,但ServerVM已经被专门调优,以最大限度地提高峰值运行速度。它旨在执行长时间运行的服务器应用程序,这些应用程序需要尽可能快的操作速度,而不是快速启动时间或更小的运行时内存占用。客户端VM编译器既是经典VM的升级,也是JDK早期版本使用的JIT编译器的升级。客户端VM为应用程序和applet提供了更好的运行时性能。Java HotSpot客户端VM经过了特别的调整,以减少应用程序启动时间和内存占用,使其特别适合客户端环境。一般来说,客户端系统更适合GUI。因此,真正的区别还在于编译器级别:客户机VM编译器不尝试执行编译器在ServerVM中执行的许多更复杂的优化,但作为交换,分析和编译一段代码所需的时间更少。这意味着客户机VM可以更快地启动,并且需要更小的内存占用。Server VM包含一个高级自适应编译器,它支持通过优化C+编译器执行的许多相同类型的优化,以及一些传统编译器无法完成的优化,例如跨虚拟方法调用的积极内联。与静态编译器相比,这是一种竞争优势和性能优势。自适应优化技术在方法上是非常灵活的,并且通常优于先进的静态分析和编译技术。注:发布jdk 6更新10(见更新发布说明:1.6.0_10中的更改)试图改善启动时间,但由于与HotSpot选项不同的原因,用一个小得多的内核进行了不同的打包。G.德米茨基指出在评论中在JDK的64位版本中,-client选项被忽略多年。看见窗java命令:-client选择Java热点客户端VM。支持64位的JDK当前忽略此选项,而是使用Java HotSpot Server VM.

慕村9548890

在早期版本的Java中,最明显的直接区别是分配给-client相对于-server申请。例如,在我的Linux系统上,我得到:$ java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'uintx AdaptivePermSizeWeight               = 20               {product}uintx ErgoHeapSizeLimit                    = 0                {product}uintx InitialHeapSize                     := 66328448         {product}uintx LargePageHeapSizeThreshold           = 134217728        {product}uintx MaxHeapSize                         := 1063256064       {product}uintx MaxPermSize                          = 67108864         {pd product}uintx PermSize                             = 16777216         {pd product}java version "1.6.0_24"因为它默认为-server,但是带着-client我的选择是:$ java -client -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'uintx AdaptivePermSizeWeight               = 20               {product}uintx ErgoHeapSizeLimit                    = 0                {product}uintx InitialHeapSize                     := 16777216         {product}uintx LargePageHeapSizeThreshold           = 134217728        {product}uintx MaxHeapSize                         := 268435456        {product}uintx MaxPermSize                          = 67108864         {pd product}uintx PermSize                             = 12582912         {pd product}java version "1.6.0_24"所以-server为此,大多数内存限制和初始分配都要高得多。java版本。然而,对于不同的体系结构、操作系统和JVM版本的组合,这些值可能会发生变化。最近版本的JVM删除了标志,并重新移动了服务器和客户机之间的许多区别。也请记住,您可以看到运行的所有细节。jvm使用jvisualvm..如果您的用户或模块设置了JAVA_OPTS或者使用更改命令行选项的脚本。这也会让你实时监控,堆和permgen空间的使用和许多其他的统计。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java