深入理解HotSpot JVM 基本原理
关于JAVA
Java®编程语言是一种通用的、并发的、面向对象的语言。它的语法类似于C和C++,但它省略了许多使C和C++复杂、混乱和不安全的特性。
Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于 Web 的内容和企业软件的全球标准。.
从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!
Java的技术体系主要有各种硬件平台上的JVM虚拟机、提供各开发领域接口支持的Java API、Java编程语言、三方Java框架(Spring等)构成。
Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。
可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。
下图展示了Java技术体系所包含的内容,以及JDK和JRE所涵盖的范围。
关于JVM
Java虚拟机是Java平台的基石。负责其硬件和操作系统的独立性,为Java字节码的执行提供运行时环境。
JVM虚拟机在Java 虚拟机规范中没有规定具体实现,而是有各大厂商自己实现。
Implementation details that are not part of the Java Virtual Machine’s specification would unnecessarily constrain the creativity of implementors. For example, the memory layout of run-time data areas, the garbage-collection algorithm used, and any internal optimization of the Java Virtual Machine instructions (for example, translating them into machine code) are left to the discretion of the implementor.
Classic VM 是“世界上第一款商用Java虚拟机”,在JDK 1.2之前是Sun JDK中唯一的虚拟机。
在JDK 1.2时,它与HotSpot VM并存,而在JDK 1.3时,HotSpot VM成为默认虚拟机,直到JDK 1.4的时候,Classic VM才完全退出商用虚拟机的历史舞台。
1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。
在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VM和HotSpot VM。
关于HostSpot
Java HotSpot虚拟机是Sun用于Java平台的VM。 它使用许多先进技术为Java应用程序提供最佳性能,包括最先进的内存模型,垃圾收集器和自适应优化器。
在SUN/Orace JDK中包括两种风格的VM
client mode
server mode
默认以client mode
启动。
启动命令加- server
,以server mode
启动。
查看当前JVM mode:
两种mode的区别:
client mode
- 短时间内启动,运行时,占用更少内存
- C1轻量级编译器,优化较少
- 适合轻量级程序和桌面程序
server mode
- 启动慢,运行时,占用更大的内存
- C2重量级编译器,更彻底的优化
- 能提供更好的性能,适合生产部署
HotSpot JVM Architecture
HotSpot JVM 主要包括3个组件:
- Class Loader Subsystem
- Runti