JVM 虚拟机栈
2024-08-31 19:10:44
虚拟机栈:
栈元素是栈帧。方法调用,栈帧入栈,反之出栈。
栈帧:一个方法的运行空间。
1、局部变量表:方法定义的局部变量、方法的参数存在该表。
实例方法中有个隐含参数“this”,所以实例方法可以访问该类的实例变量和其他实例方法。
局部变量表中变量的存放顺序:this(如果是实例方法)=>参数(如果有)=> 定义的局部变量(如果有)
slot是局部变量表中的空间单元,虚拟机规范规定:
1、32位之内的数据,用一个slot来存放,如int、short、float等;
2、64位的数据用连续两个slot来存放,如long、double;3、引用类型可32位亦可64位。
2、操作数栈:用来存放操作数。
局部变量表中的变量是不可直接使用的,如需使用必须通过相关指令将其加载至操作数栈中作为操作数使用。
3、方法返回地址:
一个方法开始执行后,只有两种方式可以退出这个方法。
第一种:执行引擎遇到任意一个方法返回的字节码指令,这时候可能会有返回值传递给上层的方法调用者,是否有返回值和返回值的类型将根据遇到的何种方法返回指令来决定,这种退出的方式称为正常完成出口。
另一种:方法执行过程中遇到了异常,并且这个异常没有在方法体内得到处理,无论是Java虚拟机内部产生的异常,还是代码中使用athrow字节指令产生的异常,只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,
这种退出称为异常完成出口。
最新文章
- OOCSS的概念和思路
- jquery checkbox 限制多选的个数
- LeetCode Majority Element I &;&; II
- Self Numbers 分类: POJ 2015-06-12 20:07 14人阅读 评论(0) 收藏
- 【Linux/Ubuntu学习 7】E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录
- 14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
- Web学习
- Linux-socket 模型理解
- Jmeter之性能测试基础
- 张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器
- 学习Javascript数据结构与算法(第2版)笔记(1)
- pycharm安装破解go插件
- 解决bootstrap多模态框跳转时页面左移问题
- 通过ping命令查看服务器是linux还是windows系列
- Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)
- python requests模块的两个方法content和text
- Spark将计算结果写入到Mysql中
- 【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
- C#中使用OracleTransaction
- git commit 、CHANGELOG 和版本发布的标准自动化