“ 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是一种过程编程语言,并支