java字节码
文章平均质量分 87
记得我雨
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java基于栈的字节码执行引擎
文章目录编译执行和解释执行基于栈的指令集基于栈的解释执行过程编译执行和解释执行许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择。Java语言经常被人定义为“解释执行的语言”,在Java初生的JDK 1.0时代,这种定义还算准确,但当前主流的虚拟机当中都包含了及时编译器后,Class文件中的代码到底会被解释执行还是编译执行,就成了只有虚拟机自己才能知道的事。大部分程序代码转化成物理机目标代码或虚拟机能执行的指令集之前,原创 2021-07-07 10:21:05 · 279 阅读 · 0 评论 -
Java虚拟机方法调用
文章目录概述解析分派静态分派动态分派单分派和多分派虚拟机动态分派的实现概述方法的调用并不等同于方法中的代码被执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还未涉及方法内部的具体运行过程。Class文件编译的过程不包含传统程序语言的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的地址(也就是之前所说的直接引用)。解析在Java语言中“编译期可知,运行期不可变”的方法,会在加载解析阶段会将Class文件常量池中的符号引用转原创 2021-07-06 08:10:57 · 423 阅读 · 0 评论 -
Java虚拟机运行时栈结构
目录概述局部变量表操作数栈动态链接方法返回地址附加信息概述Java虚拟机以方法作为最基本的执行单元,栈帧(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的栈(Virtual Machine Stack)的栈元素。栈存储了方法局部变量表、操作数栈、动态链接和方法返回地址等信息,每一个方法从调用开始到执行结束的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。在活动的线程中,只有位于栈顶的方法才是运行的,只有位于栈顶的栈帧才是有效的,其被称为原创 2021-07-01 09:09:36 · 223 阅读 · 0 评论 -
Java虚拟机类加载机制
文章目录概述类加载的时机类加载过程概述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终行程可以被虚拟机直接使用的类型,这个过程被称为虚拟机类加载机制。在Java语言里面,类的加载、连接和初始化过程实在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时稍微增加一些性能的开销,但是却为java应用提供了极高的扩展和灵活性,Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态链接这个特点实现的。类加载的时机一个类原创 2021-06-24 15:24:33 · 192 阅读 · 0 评论 -
Java虚拟机字节码指令简介
文章目录前言一、字节码和数据类型加载和存储指令运算指令前言Java虚拟机指令是由一个字节长度的、代表着某种特定操作含义的数字(称为操作码)以及跟随其后的零至多个代表此操作的参数(称为操作数)构成。Java虚拟机采用的时面向操作数栈的架构,所以大多数指令不包含操作数,只有一个操作码,指令参数存放在操作数栈中。在不考虑异常的情况下,Java虚拟机的操作模型如下: do{ 自动计算PC寄存器的值加1; 根据PC寄存器指示的位置,从字节码流中取出操作码; if(字节码存在操作数)从字节码流中.原创 2021-06-18 11:11:02 · 849 阅读 · 0 评论
分享