Java虚拟机规范学习笔记
知世
胆小菇的属性是勇敢
展开
-
Java虚拟机结构-运行时方法区
#Java虚拟机结构-运行时数据区 #- PC寄存器- Java虚拟机栈- Java堆- 方法区- 运行时常量池- 本地方法栈----------## 1. PC寄存器 ## Java虚拟机支持多线程同时运行,**每条Java虚拟机线程有自己的PC寄存器**。任意时刻,Java虚拟机线程只会执行一个方法的代码,该方法称为该线程的当前方法。若该方法不是native的,则PC寄存器保存Java虚...原创 2018-05-14 17:29:07 · 222 阅读 · 0 评论 -
《Java虚拟机规范》-字节码指令集
Java虚拟机指令:一字节长度的操作码和其后跟随的零至多个操作数构成忽略异常,Java 虚拟机的解释器使用下面的伪代码的循环即可有效工作:do { 自动计算 PC 寄存器以及从 PC 寄存器的位置取出操作码; if (存在操作数) 取出操作数; 执行操作码所定义的操作} while (处理下一次循环);操作数个数取决于操作码,操作数长度如果超过一个字节,按照Big-E...原创 2018-06-04 14:19:33 · 1064 阅读 · 0 评论 -
《Java虚拟机规范》-栈帧
**用来存储数据和部分过程结果**的数据结构,**分配在Java虚拟机栈中**,同时也被用来处理动态链接、方法返回值和异常分派。**栈帧随方法调用创建,方法结束(包括异常结束)而销毁。****每个栈帧包括:局部变量表、操作数栈和指向当前方法所属类的运行时常量池的引用。**局部变量表和操作数栈的容量在编译器确定(通过方法的Code属性保存及提供给栈帧使用),因此栈帧大小仅取决于虚拟机的实现和方法调用...原创 2018-05-24 16:05:18 · 182 阅读 · 0 评论 -
《Java虚拟机规范》-初始化方法特殊的特殊命名和异常
1. 初始化方法的特殊命名在 Java 虚拟机层面上,Java 语言中的构造函数在《Java 语言规范 (第三版)》(下文简称JLS3,§8.8)是以一个名为的特殊实例初始化方法的形式出现的,这个方法名 称是由编译器命名的,因为它并非一个合法的 Java 方法名字,不可能通过程序编码的方式实现。实例初始化方法只能在实例的初始化期间,通过 Java 虚拟机的 invokespecial 指令来调用,...原创 2018-06-01 17:23:36 · 321 阅读 · 0 评论