zoukankan      html  css  js  c++  java
  • JVM 虚拟机栈

    虚拟机栈:

      栈元素是栈帧。方法调用,栈帧入栈,反之出栈。

    栈帧:一个方法的运行空间。

      1、局部变量表:方法定义的局部变量、方法的参数存在该表。

        实例方法中有个隐含参数“this”,所以实例方法可以访问该类的实例变量和其他实例方法。

        局部变量表中变量的存放顺序:this(如果是实例方法)=>参数(如果有)=> 定义的局部变量(如果有)

        slot是局部变量表中的空间单元,虚拟机规范规定:

            1、32位之内的数据,用一个slot来存放,如int、short、float等;

            2、64位的数据用连续两个slot来存放,如long、double;3、引用类型可32位亦可64位。

      2、操作数栈:用来存放操作数。

        局部变量表中的变量是不可直接使用的,如需使用必须通过相关指令将其加载至操作数栈中作为操作数使用。

      3、方法返回地址:

        一个方法开始执行后,只有两种方式可以退出这个方法。

        第一种:执行引擎遇到任意一个方法返回的字节码指令,这时候可能会有返回值传递给上层的方法调用者,是否有返回值和返回值的类型将根据遇到的何种方法返回指令来决定,这种退出的方式称为正常完成出口。

        另一种:方法执行过程中遇到了异常,并且这个异常没有在方法体内得到处理,无论是Java虚拟机内部产生的异常,还是代码中使用athrow字节指令产生的异常,只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,

        这种退出称为异常完成出口。

      

  • 相关阅读:
    从 HTTP 到 HTTPS
    一条很用的MSSQL语句
    MVC中 jquery validate 不用submit方式验证表单或单个元素
    深信服务发布SSL站点
    警告: 程序集绑定日志记录被关闭(IIS7 64位系统)
    Winform中子线程访问界面控件时被阻塞解决方案
    C# Winform中执行post操作并获取返回的XML类型的数据
    vs2010 vs2012中增加JSon的支持
    WebService应用一例,带有安全验证
    C#事件、委托简单示例
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10722937.html
Copyright © 2011-2022 走看看