`

《深入理解Java虚拟机》笔记之第8章 虚拟机字节码执行引擎

阅读更多

1Java虚拟机的执行引擎都是一致的:输入的字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。

 

2、栈帧

1)每个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。

 (2)方法返回地址:只要本方法的异常表中没有搜索到匹配的异常处理器,那么将不会给它的上层调用者产生任何返回值。

 

3、方法调用

一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(即直接引用),在类加载期间甚至到运行期间才能确定目标方法的直接引用。

1)解析

  类加载的解析阶段,将其中一部分符号引用转化为直接引用。即调用目标在编译器进行编译时就必须确定下来,这类方法的调用称为解析。主要包括静态方法和私有方法(还包括实例构造器、父类方法、final方法),因为它们不可能通过继承或别的方式重写出其他版本。

2)分派

动态分派:运行期根据变量的实际类型确定方法执行版本的分派过程。

Java重写的本质:第一次在运行期确定接收者的实际类型,然后把常量池中的类方法符号引用解析到不同的直接引用上。

 

 

4Java编译器输出的指令流,基本上是一种基于栈的指令集架构。相比基于寄存器的指令集,其优点在于可移植性,缺点在于执行速度相对较慢。

分享到:
评论

相关推荐

    jvm指令手册 +JVM必知必会,掌握虚拟机编译过程.rar

    Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 JVM指令主要分为:本地变量表到操作数栈类指令、操作数栈到本地变量表类指令、常数到操作数栈类指令、将数组指定索引的数组推送...

    面试笔记 (自动保存的).docx

    是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟 机执行的字节码文件。 2.JDK 和 JRE 的区别是什么? Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 ...

    java基础学习笔记 java整合技术 java工具类.rar

    JVM是java的虚拟机,负责将java的字节码解码运行,边解码边运行 3.2:运行步骤 1、编写源代码(写一个xx.java文件) 2、编译源代码(javac.exe编译器) 3、执行编译文件(java.exe解释器) 4、交由JVM(java虚拟机...

    JVM+学习笔记资源合集

    JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的,JVM屏蔽了与具体操作系统平台相关的信息,Java程序只需生成在Java虚拟机上运行的字节...

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...

    JAVA--达内培训笔记

    1、Java之父Golsling 1995年5月23日 Java诞生 1998年12月 1.2版本 Java2 J2SE J2EE J2ME 2004年12月 1.5版本(5.0) Java JavaSE JavaEE JavaME 2、Java SE --- Java标准平台 Java EE --- 企业级平台 Java ...

    Java学习笔记(一)

    程序代码经过编译之后转换成一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式保存,...

    java基础知识思考题+答案(个人整理)

    然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。 3、 什么是Java语言的...

    Android 工程师成长之路:JAVA算法的实现,数据结构 和 Android源码笔记等 分享.zip

    可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能...

    记录各种学习笔记(算法、Java、数据库、并发......).zip

    可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能...

    关于学习笔记整理,包括Linux、Java、数据结构和算法,和一些IT工具的使用.zip

    可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能...

    java7rt.jar源码-Java_JVM:这是我的JavaJVM学习笔记

    二:中篇——字节码与类的加载 三:下篇——性能监控与调优篇 一: 上篇——内存与垃圾回收器 架构: jvm依赖的架构: 栈架构/寄存器架构 栈架构 JVM的生命周期: 1.启动 通过引导类加载器(Bootstrap class loader)...

    java开发与运行环境

    一些java基础知识笔记,1.JDK:java开发工具包,2.JVM:java虚拟机,3.JRE:java运行环境,二、平台:API(Java Application Programming Interface)+JVM,三、Java源代码==>编译==>*.class文件(字节码文件) (*代表...

    javaNotes:Java 的一般注释和代码片段

    此字节码旨在由 Java 虚拟机 (JVM) 解释和执行。 虽然 Java 应用程序及其编译的字节码被设计为不受硬件影响而运行,但 JVM 是专门为它所在的机器编写的,这意味着 JVM 是平台相关的,而不是用户应用程序。 由于程序...

    java版斗地主源码-MyJava:记录我自己Java学习的一些笔记,才疏学浅还望多多指教

    java版斗地主源码 [toc] :star:JAVA基础 面向对象和面向过程的区别 面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的...字节码的虚拟机。保证 了java

    笔记 — JVM内存结构

    Java虚拟机(Java Virtual Machine,简称JVM),Java的“一处编译,处处运行”,就是因为Java程序编译成字节码文件后可以在任何计算机的JVM上执行,所以JVM是我们学习Java的重点之一。 JVM = 类加载器(classloader) + ...

    Python学习笔记

    不错的python学习资料,Python ...⽽而后,这些字节码会被虚拟机在⼀一个 "巨⼤大" 的核⼼心函数⾥里解释执⾏行。这是导致 Python 性能较低的重要原因,好在现在有了内置 Just-in-time ⼆二次编译器的 PyPy 可供选择。

    左耳朵耗子leetcode-Thinking_in_Java_MindMapping:Thinking_in_Java_MindMapping

    左耳朵耗子 leetcode 公众号 coding 笔记、点滴记录,以后的文章也会同步到公众号(Coding Insight)中,希望大家关注^_^ 前言 很早之前读《Java编程思想》,用思维导图做笔记并将思维...字节码指令 其他 虚拟机结构

    python学习笔记1

    第一章python是什么跨平台(平台无关性、可移植)、面向对象、脚本语言组成python解释器、字节码编译(.pyc)、python虚拟机(PVM)第二章pyt

Global site tag (gtag.js) - Google Analytics