当前位置: 首页 > news >正文

【07-JVM面试专题-JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?】

JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?

在这里插入图片描述

JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?你掌握的怎么样呢?

JVM运行时数据区的虚拟机栈你知道吗?

  1. 虚拟机栈是一个线程执行的区域,保存着一个线程中方法的调用状态。换句话说,一个Java线程的
    运行状态,由一个虚拟机栈来保存,所以虚拟机栈肯定是线程私有的,独有的,随着线程的创建而创
    建。
  2. 每一个被线程执行的方法,为该栈中的栈帧,即每个方法对应一个栈帧。调用一个方法,就会向栈中压入一个栈帧;一个方法调用完成,就会把该栈帧从栈中弹出。

虚拟机栈的基本结构是什么呢?栈帧又是什么结构组成的呢?

  1. 虚拟机栈的最小组成单位:栈帧,栈帧的基本作用:每个栈帧对应一个被调用的方法,可以理解为一个方法的运行空间。每个栈帧中包括局部变量表(Local Variables)、操作数栈(Operand Stack)、指向运行时常量池的引用(A reference to the run-time constant pool)、方法返回地址(Return Address)和附加信息。
  2. 栈帧的基本结构是:
  • 局部变量表:方法中的局部变量表以及方法的参数都会放到这里
  • 操作数栈:也是一个栈,他是压栈以及出栈的方法来存储操作数的
  • 方法的返回地址:一个方法执行之后,只有遇到返回的字节码指令,或者异常会直接返回
  • 动态链接:将符号方法引用直接转变为直接方法引用

栈帧各个结构的作用是什么呢?

局部变量表:方法中定义的局部变量以及方法的参数存放在这张表中局部变量表中的变量不可直接使用,如需要使用的话,必须通过相关指令将其加载至操作数栈中作为操作数使用。
操作数栈:以压栈和出栈的方式存储操作数。
动态链接:每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接(Dynamic Linking)。
方法返回地址:当一个方法开始执行后,只有两种方式可以退出,一种是遇到方法返回的字节码指令;一种是遇见异常,并且这个异常没有在方法体内得到处理。

栈的基本结构

详细的说说栈帧结构中的动态链接?

  1. 动态链接是为了支持方法的动态调用过程 。

  2. 动态链接将这些符号方法引用转换为具体的方法引用

  3. 符号引用转变为直接引用,为了支持java的多态。

void a(){b();
}void b(){c();
}void c(){
}

总结:

JVM知识在面试过程中非常高频,大家一定要牢牢掌握,如果以上文章有帮助到你,希望可以点个关注,留下属于你的足迹,比心!我们下节再见哦。

http://www.lryc.cn/news/16853.html

相关文章:

  • Java性能优化-GC优化基础
  • 【Tomcat】IDEA编译Tomcat源码-手把手教程
  • 如何弄小程序?公司企业可以这样做小程序
  • 【Git】IDEA集合Git和码云
  • [USACO03FALL / HAOI2006] 受欢迎的牛 G(C++,强连通分量)
  • Vue 动态路由接口数据结构化为符合VueRouter的声明结构及菜单导航结构、动态路由懒加载方法
  • Python----------字符串
  • 日志收集笔记(架构设计、Log4j2项目初始化、Lombok)
  • 一文教你玩转 Apache Doris 分区分桶新功能|新版本揭秘
  • 数据挖掘,计算机网络、操作系统刷题笔记54
  • 将数组中的每个元素四舍五入到指定的精度numpy.rint()
  • Web安全之服务器端请求伪造(SSRF)类漏洞详解及预防
  • LeetCode:239. 滑动窗口最大值
  • JS 函数参数(动态参数、剩余参数)
  • 365天深度学习训练营-第J3周:DenseNet算法实战与解析
  • Parisland NFT 作品集
  • uniapp: 基础开发官网文档
  • mybatis中配置连接池的原理介绍分析
  • 二叉树——路径总和
  • WebDAV之π-Disk派盘+文件管理器
  • form表单单输入框回车提交事件处理
  • c++常用stl算法
  • 非对称密钥PKCS#1和PKCS#8格式互相转换(Java)
  • java获取当前时间的方法:LocalDateTime、Date、Calendar,以及三者的比较
  • npm link
  • Docker 如何配置镜像加速
  • 阅读笔记7——Focal Loss
  • ZCMU--5009: 龙虎斗
  • 创建项目(React+umi+typeScript)
  • FISCO BCOS(二十七)———java操作WeBase