首页 > 编程语言 > 详细

JavaSE---字节码执行引擎

时间:2021-06-17 16:51:35      阅读:14      评论:0      收藏:0      [点我收藏+]

1、概述

    字节码执行引擎 是 Java虚拟机 最核心的部分;

    作用:执行 字节码 ;

    Java虚拟机规范中 制定了 Java虚拟机字节码执行引擎 的概念模型,这个概念模型 称为 各种Java虚拟机执行引擎的统一外观;

2、运行时栈桢结构

    技术分享图片

    2.1、栈桢

        运行时数据区 中 栈的 元素;

        支持 虚拟机进行方法调用、方法执行的数据结构;

        每个栈桢 都包含了 局部变量表、操作数栈、动态链接、方法返回地址、一些额外信息;

        代码编译期 局部变量表、操作数栈 所需要的内存大小已经确定,并 写入到方法表的code属性中;

        同一个线程中 的方法调用链可能很长,很多方法处于同时执行状态,对于 执行引擎 来讲,只有位于栈顶的栈桢才是有效的;

      a, 局部变量表

          作用:存放 方法参数、方法内定义的局部变量; 

          Java源代码 编译为 Class文件时,在方法的Code属性的max_locals中写入 当前局部变量表 所需要的最大容量;

          局部变量表  以 变量槽  为基本单位;

          虚拟机 通过 索引定位的方式 使用局部变量表,索引值范围从0 至 最大slot数量;  

          合适的变量作用域 有助于 GC

          局部变量 不存在 类似于类变量的准备阶段,需要 显式初始化;   

      b, 操作数栈

          作用:执行方法,操作数 入栈 | 出栈

          编译期间 ,操作数栈的最大容量 被写入 Code属性的max_stacks中;  

          一个方法开始执行的时候,操作数栈 是空的,方法执行过程 中 字节码指令 往 操作数栈 中 进行 入栈、出栈;

      c, 动态链接

          

JavaSE---字节码执行引擎

原文:https://www.cnblogs.com/anpeiyong/p/14893859.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!