1. 框架
本质:跨语言的平台,运行字节码文件的虚拟计算机,只关心字节码文件是不是符合规范
特点:
- 一次编译到处运行
- 自动内存管理
- 自动垃圾回收
位置:运行在操作系统之上
2. 架构模型
跨平台特性要求使用栈
- 基于栈式架构
- 零地址分配
- 不需要硬件支持,一移植性好
- 基于寄存器
- 需要硬件支持
- 指令集大(16位),指令少
3. 生命周期
3.1. 启动
引导类加载器创建初始类
3.2. 执行
程序开始到程序结束
3.3. 退出
- 程序结束
- 异常错误
- 操作系统错误
- 调用eixt方法、halt方法
- JNI卸载JVM
4. 发展历程
- Sun Classic VM
- 只提供解释器,逐行解释效率低,
- 外挂JIT
- 只能二选一
- Exact VM
- 准确式内存管理:数据具体类型
- 编译器与解释器混合工作
- 热点探测
- HotSpot VM
- 默认虚拟机
- 热点代码即时编译、栈上替换
- 编译器与解释器协同工作
- BEA JRockit
- 专注于服务器端,不关注启动速度也就不含解释器
- 响应快
- 全套解决方案
- IBM J9
- 多用途
- 广泛用于IBM产品
- KVM和CDC/CLDC
- Java Me(诺基亚)
- 简单轻量,面向低端好
- Azul VM
- 特定硬件平台绑定
- Vega系统
- 高性能计算机
- Liquid VM
- 高性能计算机,
- 不需要操作系统支持
- Apache Harmony
- 安卓
- Microsoft JVM
- TaobaoJVM
- Dalvik VM
- Graal VM