1.JVM概述
1.1 什么是虚拟机
虚拟机
:模拟某种计算机体系结构,执行特定指令集的软件。
分为两大类:
- 系统虚拟机( Virtual Box、VMware)
- 程序虚拟机(JVM、.NET CLR、P-Code)
1.2 什么是Java 虚拟机
Java 语言虚拟机
- 可以执行Java 语言的高级语言虚拟机。Java 语言虚拟机并不一定就可以称为JVM,譬如:Apache Harmony
Java™ 虚拟机
- 必须通过Java TCK(Technology Compatibility Kit)的兼容性测试的Java语言虚拟机才能称为“Java™ 虚拟机”
- Java™ 虚拟机并非一定要执行“Java”程序
- 业界三大商用JVM:Oracle HotSpot 、Oracle JRockit VM、IBM J9 VM
- 其他虚拟机:Google Dalvik VM、Microsoft JVM、TaoBao JVM等
1.3 Java虚拟机架构

- Class Loader:类加载器
- Runtime Data Area:运行时数据区
- Execution Engine:执行引擎
- Native Interface:本地接口
1.4 HotSpot 虚拟机
- 最初由名为“Longview Technologies”的小公司开发,后被Sun 公司收购。最初并非面向Java 语言开发,而是面向Strongtalk 语言。
- HotSpot 命名来自它的“热点代码探测”技术。
- 从JDK 1.2 开始加入Sun(Oracle)JDK,在JDK 1.3 开始成为Sun(Oracle)JDK 的默认实现,在JDK1.4中成为唯一的虚拟机。
- 在2006年底开始开源,由此建立的OpenJDK 项目。
- 本课程中所有的虚拟机实现,指的都是Oracle HotSpot 虚拟机。
1.5 公有设计,私有实现
- 前面所讲内存区域是在《Java 虚拟机规范》(JVMS)中定义的概念模型,但JVMS也同时声明这些概念不约束虚拟机的具体实现,只要求虚拟机实现的效果在外部看起来与规范描述一致即可。
- 比如:堆内存在规范中规定是需要自动内存管理的,但是如何管理是具体虚拟机实现。
- https://docs.oracle.com/javase/specs/index.html
- Java语言规范和JVM规范
Click here to view the copyright notice of this site(点击此处查看本站版权声明)
必须 注册 为本站用户, 登录 后才可以发表评论!