zoukankan      html  css  js  c++  java
  • Java虚拟机执行引擎

    一、简介

      执行引擎是Java虚拟机核心组成部分,Java虚拟机是一个相对物理机的概念。物理机和Java虚拟机都具有执行引擎,物理机的执行引擎是作用在处理器、寄存器、内存和操作系统之上的。而Java虚拟机是由软件实现的,不受物理条件限制。

    二、运行时栈帧结构

      方法是Java虚拟机最基本的执行单元,栈帧(Stack Frame)是Java虚拟机方法调用和方法执行的数据结构。栈帧也是虚拟机运行时数据区虚拟机栈(Virtual Machine Stack)的栈元素。

      栈帧存储了局部变量表、操作数栈、动态连接、方法返回地址和其他附加信息。

      Java源码编译时就已经分析计算出“栈帧”需要多大的局部变量表、多深的操作数栈。

      线程中方法的调用栈会很长,在同一时间、同一线程调用堆栈的所有方法都处于执行状态。但是,对于执行引擎而言,在活动的线程中,位于栈顶的方法才是运行的,位于栈顶的栈帧才是生效的。位于栈顶的栈帧是“当前栈帧”,位于栈顶的方法是“当前方法”。

      局部变量表

        局部变量表(Local Variables Table)是一组存储变量值的存储空间,用于存储方法参数和方法内部定义的局部变量。

      操作数栈

        操作数栈又称操作栈,是一个后进先出(Last in first out)的栈,和局部变量表一样,在Java源码编译时已经分析计算出操作栈的深度。操作数栈每个元素都可以包括long和double在内的任何Java数据类型。

      动态连接

        每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有该引用是为了支持方法调用过程中的动态连接。

      方法返回地址

        方法执行中通过两种方式退出方法

          1. 执行引擎遇到任意一个方法返回的字节码指令,这是可能会有值返回到方法调用者。

          2. 方法执行的过程中遇到异常放回。

      

  • 相关阅读:
    tcp的三次握手和四次挥手
    前端文档规范
    阻止事件冒泡
    研发纠纷解决方案
    ui-router 中views的配置
    JXL操作Excel部分详解(java)
    utf-8与utf-16的区别
    把字符串转换为Double 类型
    spring MVC
    Android项目目录结构
  • 原文地址:https://www.cnblogs.com/naray/p/15428853.html
Copyright © 2011-2022 走看看