JVM简介

一、什么是JVM?

JVM(Java Virtula Machine),Java虚拟机的缩写,是执行字节码文件的一个虚拟的计算机设备。
JVM的出现早于Java语言的出现,并且在JDK7之后JVM可以运行非Java语言编写的字节码文件。

二、JVM的结构

Screenshot_20200407_221637.jpg

JVM的整体结构包括:

上层:类文件、类加载子系统

中层:方法区、堆、程序计数器、本地方法栈、JVM虚拟机

下层:执行引擎、本地方法接口

三、Java代码的执行过程

1.Java源码(xxx.java)导入
2.通过Java编译器编译为字节码文件(xxx.class)
3.进入JVM虚拟机执行
4.通过类加载器加载
5.通过字节码校验器校验是否正确
6.通过JIT编译器翻译字节码

四、JVM的架构模型

通常的架构分为基于栈的指令集架构和基于寄存器的指令集架构
1.基于栈的指令集合:

  • 优点:跨平台,指令集小,指令多
  • 缺点:执行性能比寄存器差

2.基于寄存器的指令集合:

  • 优点:执行性能高,运行更快
  • 缺点:可移植性差

Hotspot是基于栈的指令集的架构

  • 0地址指令:无地址位
  • 1地址指令:有一个地址位

五、JVM的生命周期

  1. 虚拟机的启动
    Java虚拟机的启动是通过类加载器(Bootstrap Class Loader)创建一个初始类(Initial Class)来完成的,这个类有虚拟机的具体情况指定。
  2. 虚拟机的执行
    一个运行中的Java虚拟机有一个明确的目的就是执行Java程序
  3. 虚拟机的退出
    1)程序执行结束

2)在执行的过程中出现未处理的异常或错误而终止
3)操作系统出现错误使Java虚拟机进程终止
4)某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次操作

六、Java的发展过程

1.Sum Classic VM
   只提供了解释器,外挂JITJDK4后被淘汰
2.Exact VM
   准确的内存管理和他的名字一样,可知内存中某个位置的数据类型
3.Hotspot VM
通过计数器找到最具有价值的代码,触发即时编译器或者栈上替换,Hotspot就代表热点代码探测技术,编译器和解释器协调工作,可以在响应速度和执行时间之间取得一个平衡。

  1. BEA JRockit
    专注于服务器端,号称世界上最快的JVM

5.IBM J9
有影响力的三大商用虚拟机,多用途JVM
6.KVM和CDC/CLDC Hotspot
KVM简单轻量,高度移植性
7.Azul VM
软硬件结合,性能更加优秀
。。。。

最后修改:2020 年 05 月 06 日
如果觉得我的文章对你有用,请随意赞赏