当前位置: 首页 > 面试题库 >

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

冯泓
2023-03-14
问题内容

“ java -server”和“ java -client”之间是否有实际的实际区别?

我在Sun网站上所能找到的一切都是模糊的

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

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


问题答案:

这实际上与HotSpot和默认选项值(Java HotSpot VM Options)链接在一起,这些默认值在客户端和服务器配置之间有所不同。

从白皮书的第2章(Java HotSpot性能引擎体系结构)开始:

JDK包括两种VM:客户端产品和为服务器应用程序调整的VM。这两个解决方案共享Java HotSpot运行时环境代码库,但是使用不同的编译器,这些编译器适合于客户端和服务器的独特性能特性。这些差异包括编译内联策略和堆默认值。

尽管服务器VM和客户端VM相似,但已经对服务器VM进行了特殊调整,以最大程度地提高峰值运行速度。它用于执行长时间运行的服务器应用程序,这些应用程序需要比快速启动时间或较小的运行时内存占用更多​​的最快的运行速度。

客户端VM编译器可作为经典VM和早期JDK版本使用的即时(JIT)编译器的升级。Client VM为应用程序和小程序提供了改进的运行时性能。Java HotSpot客户端VM经过特别调整,以减少应用程序启动时间和内存占用,使其特别适合客户端环境。通常,客户端系统更适合GUI。

因此,真正的区别还在于编译器级别:

客户端VM编译器不会尝试执行由服务器VM中的编译器执行的许多更复杂的优化,但是作为交换,它需要更少的时间来分析和编译一段代码。这意味着客户端VM可以更快地启动,并且需要较小的内存空间。

Server VM包含一个高级自适应编译器,该编译器支持通过优化C ++编译器执行的许多相同类型的优化,以及一些传统编译器无法完成的优化,例如跨虚拟方法调用的主动内联。与静态编译器相比,这是一个竞争优势和性能优势。自适应优化技术的方法非常灵活,通常甚至优于高级静态分析和编译技术。



 类似资料:
  • 问题内容: 我是JSP和服务器端编程的新手。到目前为止,我正在使用Servlet和Java类。我正在借助Java类隔离我的应用程序(按照MVC模型)。我想知道Java Bean和Java类之间的区别。在哪种情况下,我可以使用Java Bean代替Java类。任何有用的解释或有用的链接? 问题答案: Java bean只是一个符合某些约定的类: 可以由getter(和setter访问的属性,如果这些

  • 问题内容: 使用 和运行Java应用程序有什么区别?在运行Java应用程序时,其中一个优先于另一个吗?我的意思是,对于JVM(根据它们的机器资源使用情况),这些方法中的哪一种更昂贵? 哪一种会导致JVM在尝试运行应用程序时产生更多线程? 问题答案: 我更喜欢第一个版本来启动Java应用程序,只是因为它的陷阱少了(“欢迎使用classpath hell”)。第二个需要一个可执行的jar文件,并且必须

  • 本文向大家介绍Java 8和Java 9之间的区别,包括了Java 8和Java 9之间的区别的使用技巧和注意事项,需要的朋友参考一下 Java 9版本引入了新的增强功能并添加了新功能。它包括 JShell,Http2Client,Java平台模块系统(JPMS),多版本jar文件,堆栈遍历API,接口中的私有方法,流程API更新,集合API更新,流API改进等。 以下是Java 8和Java 9

  • 使用 和运行Java应用程序有什么区别?在运行Java应用程序时,它们中的一个比另一个更好吗?我的意思是,对于JVM(根据它们的机器资源使用情况)来说,这些方法中哪一种更昂贵? 哪一个会导致JVM在尝试运行应用程序时生成更多的线程?

  • 本文向大家介绍Java和JavaScript之间的区别。,包括了Java和JavaScript之间的区别。的使用技巧和注意事项,需要的朋友参考一下 众所周知,Java和javascript都是编程语言,并在应用程序开发中使用。但是我们将在下面讨论的两种语言之间存在显着差异。 以下是Java和JavaScript之间的重要区别。 序号 键 爪哇 的JavaScript 1个 语言类型 JavaScr

  • 本文向大家介绍Go和Java之间的区别。,包括了Go和Java之间的区别。的使用技巧和注意事项,需要的朋友参考一下 走 Go是一种过程编程语言。程序是使用程序包组装的。它支持类似于动态语言的环境采用模式。 爪哇 Java是一种面向对象的编程语言。Java安静,快速,可靠且安全。它也是最广泛使用的语言。 以下是Go和Java之间的重要区别。 序号 键 走 爪哇 1 类型 Go是一种过程编程语言,并支