zoukankan      html  css  js  c++  java
  • Java虚拟机学习笔记(字节码执行引擎)

    运行时栈帧结构

    1.局部变量表 null  JIT编译器优化
    2.操作数栈  LIFO
    3.动态链接            |
    4.方法返回地址    | 栈帧信息
    5.附加信息            |

    ——————————————————————————————————

    方法调用

    1.解析调用 

    符号引用 静态、私有、实例构造器、父类方法 final 非虚方法

    2.分派

    1.静态分派 
    虚拟机(编译器)在重载时是通过参数的静态类型而不是实际类型作为判断
    静态类型在编译器是可期的,且选择更加适合的版本
    2.动态分派
    重写  invokevirtual 运行期确定接受者实际类型
    3.单分派与多分派
    方法的接收者与方法的参数统称为方法的宗量。
    单分派 一宗量  多分派  多余一个宗量
    Java语言静态多分派,动态单分派
    4.虚拟机动态分派的实现
    虚方法表 接口方法表 |  内联缓存 守护内联

    ——————————————————————————————————

    基于栈的字节码解释执行引擎

    1.解释执行  (/编译执行)
    2.基于栈的指令集 可移植性,更紧凑,简单(/基于寄存器的指令集)速度快,受限硬件
    3.基于栈的解释器执行过程

    public int add(){  int a =1 ; int b = 2  ; return a+b }; 

    0: bipush 1
    2: istore_1
    3: sipush 2
    6: istore_2
    7: iload_1
    8: iload_2
    9: iadd
    10: ireturn

       

  • 相关阅读:
    包含min函数的栈
    栈的应用
    给定金额m和红包数量n
    顺时针打印矩阵
    二叉树的镜像
    elementUI table表头错位问题
    金额格式化
    ajax跨域问题全解
    JavaScript 的 this 原理
    vue技术分享-你可能不知道的7个秘密
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3125028.html
Copyright © 2011-2022 走看看