zoukankan      html  css  js  c++  java
  • Java虚拟机栈和本地方法栈

    Java虚拟机栈的特征

    线程私有

    后进先出(LIFO)栈

    存储栈帧,支持Java方法的调用、执行和退出

    可能出现OutOfMemoryError异常和StackOverflowError异常

    Java本地方法栈的特征

    线程私有

    后进先出(LIFO)栈

    作用是支撑Native方法的调用、执行和退出

    可能出现OutOfMemoryError异常和StackOverflowError异常

    有一些虚拟机(如HotSpot)将Java虚拟机栈和本地方法栈合并实现

    栈帧的概念和特征

    Java虚拟机栈中存储的内容,它被用于存储数据和部分过程结果的数据结构,同时也被用来处理动态链接、方法返回值和异常分派

    一个完整的栈帧包含:局部变量表、操作数栈、动态连接信息、方法正常完成信息和方法异常完成信息

    局部变量表概念和特征

    由若干个Slot组成,长度由编译期决定

    单个Slot可以存储一个类型为boolean,byte,char,short,float,reference和returnAddress的数据,两个Slot可以存储一个类型为long或double的数据

    局部变量表用于方法间参数传递,以及方法执行过程中存储基础数据类型的值和对象的引用

    操作数栈的概念和特征

    是一个后进先出栈,由若干个Entry组成,长度由编译期决定

    单个Entry即可以存储一个Java虚拟机中定义的任意数据类型的值,包括long和double类型,但是存储long和double类型的Entry深度为2,其他类型的深度为1

    在方法执行过程中,栈帧用于存储计算参数和计算结果;在方法调用时,操作数栈也用来准备调用方法的参数以及接收方法返回结果 

  • 相关阅读:
    Spring MVC Ajax 嵌套表单数据的提交
    Spring MVC 过滤静态资源访问
    Spring MVC 页面跳转时传递参数
    IDEA Maven 三层架构 2、运行 springMVC
    IDEA Maven 三层架构 1、基本的Archetype 搭建
    EasyUI DataGrid 基于 Ajax 自定义取值(loadData)
    Spring MVC Ajax 复杂参数的批量传递
    Mybatis Sql片段的应用
    在 Tomcat 8 部署多端口项目
    自动升级的设计思路与实现
  • 原文地址:https://www.cnblogs.com/thomas12112406/p/5858298.html
Copyright © 2011-2022 走看看