execution engine: 运行时栈current stack frame主要保存了 local variable table, operand stack, dynamic linking, return address and some other additional info. 方法调用(确定调用哪个方法的过程):这类加载阶段就能够确定调用版本的符号应用,直接转化为方法的直接引用(方法在内存中的入口地址),这其中有四类方法:静态方法.私有方法.实例构造器<init> 和 父类方…
目录 第 12 章 执行引擎 1.执行引擎概述 1.1.执行引擎概述 1.2.执行引擎工作过程 2.Java 代码编译和执行过程 2.1.解释执行和即时编译 2.2.解释器和编译器 3.机器码 指令 汇编语言 3.1.机器码 3.2.指令和指令集 3.3.汇编语言 3.4.高级语言 3.5.程序编译流程 3.6.字节码 4.解释器 4.1.为什么要有解释器 4.2.解释器的分类 4.3.解释器的现状 5.JIT 编译器 5.1.为什么还需要解释器 5.2.即时编译器的案例 5.3.编译器相关概念…
进入JVM的世界:<深入理解JVM虚拟机>-- 思维导图 之前一直都是零零散散的看了些JVM的知识,心想这样不行啊!于是便抽空看了一下这本神书,阅罢,醍醐灌顶.豁然开朗.真正的是知其然,更知其所以然.当然,看完了书,知识还不是自己的,只有留在自己的脑袋里面的,才是自己的.因此我整理了一份思维导图,希望自己有时间的时候,就多看看,多想想.巩固记忆. 大图地址:https://img2018.cnblogs.com/blog/785907/201901/785907-201901061309144…
5. 早期编译优化 早起编译优化主要指编译期进行的优化. java的编译期可能指的以下三种: 前端编译器:将.java文件变成.class文件,例如Sun的Javac.Eclipse JDT中的增量式编译器(ECJ) JIT编译器(Just In Time Compiler):将字节码变成机器码,例如HotSpot VM的C1.C2编译器 AOT编译器(Ahead Of Time Compiler):直接把*.java文件编译成本地机器码,例如GNU Compiler for the Java(…
1.概述 执行引擎是jvm核心组成部分之一,建立在物理器,硬件和操作系统层面之上,引擎在执行代码时会有解释执行和编译执行两种选择,输入字节码文件,字节码解析输出结果. 2.栈帧 栈帧是用于支持虚拟机进行方法调用和执行方法的结构,是虚拟机运行时数据区中的虚拟机栈的栈元素,存储方法的局部局部变量,操作数栈,动态链接和方法返回地址等信息,对应着入栈和出栈的过程. 上面是栈帧的基本结构,在线程中的方法调用链中同时执行很多方法,但只有栈顶的栈帧才是有效的,称为当前栈帧,与这个帧关联的叫当前方法,而栈帧的结…
程序和机器沟通的桥梁 一.闲聊 相信很多朋友在出国旅游,或者与外国友人沟通的过程中,都会遇到语言不通的烦恼.这时候我们就需要掌握对应的外语或者拥有一部翻译机.而笔者只会中文,所以需要借助一部翻译器才能与不懂中文的外国友人交流.咱们的执行引擎就类似于这部"翻译机". 二.概述 执行引擎的作用就是将字节码指令解释或者编译为对应平台上的本地机器指令.简单来说,执行引擎充当了将高级语言翻译为机器语言的翻译者.对于Hotspot虚拟机,执行引擎中包含两部分:解释器和JIT编译器(即时编译器).下…
目录 简介 JIT编译器 Tiered Compilation分层编译 OSR(On-Stack Replacement) Deoptimization 常见的编译优化举例 Inlining内联 Branch Prediction分支预测 Loop unswitching Loop unrolling展开 Escape analysis逃逸分析 总结 简介 小师妹已经学完JVM的简单部分了,接下来要进入的是JVM中比较晦涩难懂的概念,这些概念是那么的枯燥乏味,甚至还有点惹人讨厌,但是要想深入理解…
一.方法调用 方法调用不同于方法执行,方法调用阶段的唯一任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程.Class文件的编译过程中不包括传统编译器中的连接步骤,一切方法调用在Class文件里面存储的都是符号引用,而不是方法在实际运行时内存布局中的入口地址(直接引用).也就是需要在类加载阶段,甚至到运行期才能确定目标方法的直接引用.  二.解析 如前所述,所有的方法调用中的目标方法在Class文件里面都是一个常量池中的符号引用,在类加载阶段,会将其中的一部分符…
摘自深入分析java web技术内幕…
1. 执行引擎概述 1.1 执行引擎 1.2 概述 执行引擎是Java虚拟机的核心组成部分之一. 虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.缓存.指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式. JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,…