`
lg70124752
  • 浏览: 59548 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

深入理解java虚拟机学习笔记(六)--虚拟机字节码执行引擎

    博客分类:
  • jvm
阅读更多
第八章 虚拟机字节码执行引擎
1、栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法插的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。
2、Java虚拟机里面调用字节码指令的方法:
invokestatic:调用静态方法。
invokespecial:调用实例构造器<init>方法、私有方法和父类方法。
invokevirtual:调用所有的虚方法。
只有被invokstatic和invokespecial指令调用的方法,都可以在解析阶段确定唯一的调用版本,符合这个条件的有静态方法、私有方法、实例构造器和父类方法四类,它们在类加载的时候就会把符号引用解析为该方法的直接引用。这些方法可能称为非虚方法,其他的方法就称为虚方法。
3、invokevirtual指令的运行时解析过程
1)找到操作娄栈枯的第一个元素所指向的对象的实际类型,记作C。
2)如果类型C中找到与常量中的描述符和简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个方法的直接引用,查找过程结束;不通过则返回java。lang。IllegalAccessError异常。
3)否则,按时继承关系从下往上依次对C的各个父类进行第2步的搜索和验证过程。
4)如果始终没有找到合适的方法,则抛出java.lang.AbstractMethodError异常.
4、基于栈的指令集与基于寄存器的指令集
基于栈的指令集架构(Instruction Set Architecture,ISA),指令流里面的指令大部分都零地址指令,它们信赖操作数栈进行工作。基于寄存器的指令集,就是X86的二地址指令集。
第九章 类加载及执行子系统的案例与实战
分享到:
评论

相关推荐

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

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

    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年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...

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

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

    Java学习笔记(一)

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

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

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

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

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

    Python学习笔记

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

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

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

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    python学习笔记1

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

    笔记 — JVM内存结构

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

    blog:日常工作中使用的技术沉淀+学习记录

    JVM进阶|java字节码 Mybatis 「Mybatis系列」Mybatis入门 「Mybatis系列」Mybatis开发方式和配置 「Mybatis系列」Mybatis高级应用 「Mybatis系列」Mybatis缓存 分布式 了解分布式架构 实践 JUnit4教程+实践 通用点赞...

    自己动手写操作系统(含源代码).part2

     做真正 Hacker的乐趣──自己动手去实践 2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理,还需要实际...

    自己动手写操作系统(含源代码).part1

     做真正 Hacker的乐趣──自己动手去实践 2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系统的原理,还需要实际...

Global site tag (gtag.js) - Google Analytics