概述
Java HotSpot™虚拟机实现Sun Microsystems公司的高性能虚拟机的Java平台, 平台的应用环境从头到现在,依然有很多的应用存在: 从信用卡到无线设备,桌面到大型机等
Java HotSpot VM基于Java技术的跨平台支持和安全模型,具有可扩展性,质量和性能的新特性和功能。 除了新功能外,此版本还与以前的版本向上兼容
Java HotSpot VM支持企业应用程序的开发,部署和管理的所有方面,并且用于:
- 集成开发环境(IDE),包括Sun Java Studio工具,NetBeans开源项目,IBM的Eclipse,IntelliJ IDEA,Oracle JDeveloper等
- 应用服务器厂商,如Sun Java系统应用服务器,BEA系统公司的WebLogic软件,IBM的WebSphere软件,苹果电脑公司的软件的WebObjects等等
目前的话,IntelliJ IDEA工具还是比较火的,同样满足需求的请求下,coder们也追求快感和美感
Sun Microsystems公司也通过使用各种行业标准和内部开发的基准测试性能的改进, 这些改进适用于客户端和服务器端Java VM环境
Java标准版平台包含了Java虚拟机的两个实现:
- Java HotSpot Client VM,通过减少应用程序启动时间和内存占用,在客户端环境中运行应用程序时可以获得最佳性能
- Java HotSpot Server VM,旨在最大限度地提高服务器环境中运行的应用程序的执行速度
Java HotSpot VM架构 概观
Java HotSpot虚拟机是Sun用于Java平台的VM。 它使用许多先进技术为Java应用程序提供最佳性能,包括最先进的内存模型,垃圾收集器和自适应优化器。 它以高级,面向对象的风格编写,并具有以下特点:
-
统一对象模型
-
解释,编译和本地帧都使用相同的堆栈
-
基于本地线程的抢占式多线程
-
高效的垃圾回收机制
-
超快速线程同步
-
动态的优化和快速的编译器优化
-
在VM启动时生成的系统特定的运行时程序
-
支持并行编译的编译器接口
-
运行时分析只关注"热"方法的编译工作
JDK包括两种VM - 一种是客户端产品,另一种是针对服务器应用程序调整的VM。 这两个解决方案共享Java HotSpot运行时环境代码库,但使用适合客户端和服务器独特性能特征的不同编译器。 这些差异包括编译内联策略和堆默认值
JDK在发行版中包含这两个系统,因此我们可以通过指定-client或-server来选择想要的系统
用了这么久的JDK,尴尬,才知道,另外发现大多数的系统层级或载体组件,都有着相同,或者说类似的架构设计模式
虽然服务器和客户端虚拟机类似,但服务器虚拟机已经过专门调整,以最大限度地提高峰值运行速度。 它旨在执行长时间运行的服务器应用程序,这些应用程序需要尽可能快的运行速度,而不是快速启动时间或较小的运行时内存占用
客户端VM编译器用作经典VM和先前版本的JDK使用的实时(JIT)编译器的升级。 客户端VM为应用程序和小程序提供了改进的运行时性能。 Java HotSpot客户端VM经过专门调整,可缩短应用程序启动时间和内存占用,使其特别适合客户端环境。 通常,客户端系统更适合GUI
Client VM编译器不会尝试执行服务器VM中编译器执行的许多更复杂的优化,但作为交换,它需要更少的时间来分析和编译一段代码。 这意味着客户端VM可以更快地启动并且需要更小的内存占用
Server VM包含一个高级自适应编译器,它支持通过优化C++编译器执行的许多相同类型的优化,以及传统编译器无法完成的一些优化,例如跨虚拟方法调用的积极内联。 与静态编译器相比,这是一种竞争优势和性能优势。 自适应优化技术的方法非常灵活,通常甚至优于高级静态分析和编译技术
这两种解决方案均可提供极其可靠,安全且可维护的环境,以满足的需求
粗略的VM架构认识就到这里,继续学习 Memory Model--内存模型
----------------------------------------------------------------