JAVA虚拟机基本概念

来源:互联网 发布:宋为什么灭大理知乎 编辑:程序博客网 时间:2024/06/13 21:02

Java虚拟机:简称JVM,想象中的机器,软件模拟实现。有想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。可以把JVM当作柴油机,JAVA是柴油。

JVM4个寄存器:
pc程序计数器,用于记录程序的执行
optop操作数栈顶指针 ,记录指向Java栈区的指针
frame当前执行环境指针, 记录指向Java栈区的指针。
vars指向当前执行环境中第一个局部变量的指针,记录指向Java栈区的指针。

JVM栈结构,java虚拟机栈
代码中一个类的每一个方法创建一个栈框架,以保存该方法的状态信息。

栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失

栈框架包括以下三类信息:
局部变量
局部变量用于存储一个类的方法中所用到的局部变量。vars寄存器指向该变量表中的第一个局部变量。
执行环境
执行环境用于保存解释器对Java字节码进行解释过程中所需的信息:上次调用的方法、局部变量指针和操作数栈的栈顶和栈底指针。
操作数栈
用于存储运算所需操作数及运算的结果。

JVM堆:Java类的实例所需的存储空间是在堆上分配的。解释器负责分配,记录,回收、。
用于存放类的对象实例。

JVM存储区
JVM有两类存储区:常量缓冲池和方法区
常量缓冲池用于存储类名称、方法和字段名称以及串常量
方法区。在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域
方法区则用于存储Java方法的字节码。

运行数据区域可以划分为6大块:Java栈、程序计数寄存器(PC寄存器)、本地方法栈(Native Method Stack)、Java堆、方法区域、运行常量池(Runtime Constant Pool)。其中,前面3各区域(PC寄存器、Java栈、本地方法栈)是每个线程独自拥有的,后三者则是整个JVM实例中的所有线程共有的。

0 0
原创粉丝点击