Java发展重大事件
2000年,JDK1.3发布,Java 的HotSpot虚拟机发布,正式成为Java默认的虚拟机。
2011年,JDK7发布,正式启用了新的垃圾回收器G1。
2017年。JDK9发布。G1设置为默认GC,代替GMS。
系统虚拟机:
Visual Box,Vmware。对物理计算机的仿真
程序虚拟机
Java虚拟机,专门为执行单个计算机程序而设计
Java虚拟机
二进制字节码的运行环境,装在字节码到其内部,解释/编译为对应平台上的机器指令执行。
特点:
一次编译,到处运行
自动内存管理
自动垃圾回收功能
Java虚拟机运行环境
JVM运行在操作系统之上,与硬件没有直接的交互
HotSpot虚拟机
Java虚拟机采用的HotSpot虚拟机,采用解释器和即时编译器并存的架构。
架构模型
JVM采用基于栈的指令集架构,跨平台,指令集小,指令多,执行性能比寄存器差
基于栈式架构特点:
- 设计和实现更简单。适用于资源受限的系统
- 避开了寄存器的分配难题,使用零地址指令方式分配
- 指令流中的指令大部分是零地址指令,执行过程依赖于操作栈,指令集更小,编译器更容易实现
- 不需要硬件支持,可移植性更好,更好实现跨平台
基于寄存器架构的特点
- 典型的应用是x86的二进制指令集;比如传统的PC以及Android的Davlik虚拟机
- 指令集架构完全依赖硬件,可移植性差
- 性能优秀和执行更高效
- 花费更少的指令去完成一项操作
- 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令,二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主。
虚拟机的启动:
引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的。
虚拟机的执行:
一个运行中的Java虚拟机有清晰的任务:执行Java程序,程序开始执行他才运行,程序技术就停止。
执行一个Java程序时,真真正正正在执行的是叫Java虚拟机的进程。