1.JVM是什么
- 它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
- jvm 跟java无关 是一种规范。
- JVM的作用:为java程序提供一个可以运行的环境;Java程序的跨平台特性主要就是因为JVM实现的。
2.JVM的体系结构
JVM内部体系结构大致分为三部分:
- 类装载器(ClassLoader)子系统:根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。
- 运行时数据区:这就是我们常说的JVM的内存。
- 执行引擎:执行classes中的指令。
-
本地接口: 与 native libraries 交互,是其它编程语言交互的接口。
3.JAVA代码执行流程
流程
:
- 首先通过编译器把 Java 代码转换成字节码
- 类加载器(ClassLoader)再把字节码加载到 内存中,将其放在运行时数据区(Runtime data area)的方法区内,而字节码文件只是 JVM 的一 套指令集规范,并不能直接交给底层操作系统去执行
- 因此需要特定的命令解析器执行引擎 (Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行
- 而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。
4.JVM的架构模型
java 编译器的指令流基本是基于栈的指令集架构
- 基于栈的式架构
- 适用资源受限系统
- 避开了寄存器的分配问题,使用零地址指令分配方式, 执行过程依赖操作栈
- 指令集更小 但指令多
- 可移植性好
- 基于寄存器式架构
- 完全依赖硬件 可移植性差
- 性能好 执行高效
- 基于一地址 二地址 三地址指令 (即计算机组成里的指令格式)
5.JVM的生命周期
- ①启动
- 通过引导类加载器创建一个初始类,这个类由虚拟机的具体实现来指定
- ②执行
- 程序执行时才运行,程序结束时他就停止
- 执行java程序的时候,真正在执行的是JAVA虚拟机进程
- ③退出
- 正常执行结束
- 有异常或错误
- 操作系统出现错误导致jvm终止
注:图片位转载