jvm简介和体系结构

1,简介

JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机。

Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

“一次编译,到处运行”

JVM在JRE中;JDK(Java Development Kit)为开发工具包,有编译和调试java程序的工具。

 

2、体系结构

 

由上面5个部分组成。方法区里还包括一个运行时常量池。

(1)线程共享的区域:

 Java堆:负责存储所有对象实例和数组的

方法区域:存储了类的信息和常量

(2)线程私有的区域:

java栈(虚拟机栈):栈里面存储着的是StackFrame,被译作java虚拟机框架,也叫做栈帧。

StackFrame包含三类信息:局部变量,执行环境,操作数栈。局部变量用来存储一个类的方法中所用到的局部变量。执行环境用于保存解析器对于java字节码进行解释过程中需要的信息,包括:上次调用的方法、局部变量指针和 操作数栈的栈顶和栈底指针。操作数栈用于存储运算所需要的操作数和结果。StackFrame在方法被调用时创建,在某个线程中,某个时间点上,只有一个 框架是活跃的,该框架被称为Current Frame,而框架中的方法被称为Current Method,其中定义的类为Current Class。

程序计数寄存器:当前线程所执行的字节码的行号指示器;

如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Natvie 方法,这个计数器值则为空(Undefined)。

本地方法堆栈:类似java栈,JVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。

5个部分图示:

图示2:

 

原文地址:https://www.cnblogs.com/lnu161403214/p/10417410.html