JVM之虚拟机栈

感谢尚硅谷宋红康老师的JVM入门到精通课程,该套课程可以在B站查询(持续更新)!
本套教程均为我学习课程之后的学习笔记,防止遗忘巩固自己记忆。

1、虚拟机栈的优缺点:
优点:跨平台,指令集小,编译器容易实现。
缺点:性能下降,实现同样的功能需要更多地指令。

2、内存中的栈和堆
栈是运行时的单位(解决运行时的问题),而堆是存储的单位(解决数据存储的问题)。
其中栈也是可以存放少量数据。

3、JAVA虚拟机栈是什么?
JAVA虚拟机栈早期也叫JAVA栈,每个线程在创建时都会随之创建一个虚拟机栈,其内部保存一个个的栈帧对应着JAVA方法(method)的调用。它的作用是保存方法的局部变量(八种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。
其中栈内的数据都是储存在栈帧中,每个方法都各自对应了一个栈帧。

4、开发中栈可以出现的异常有哪些?

  • 若是固定大小的JAVA虚拟机栈,那每一个线程的JAVA虚拟机栈容量可以在线程创建的时候独立选定,如果线程请求分配的栈容量超过JAVA虚拟机栈允许的最大容量,JAVA虚拟机将会抛出一个StackOverflowError异常

  • 若是JAVA虚拟机栈可以动态扩展,并且在尝试扩展时的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建相应的虚拟机栈,那JAVA虚拟机将会抛出一个OutofMemroyError异常。
    设置栈的内存大小
    5、方法的结束方式分为两种:

  • 正常的return结束

  • 方法执行中出现未捕获处理的异常,以抛出异常结束(以下则为该异常抛出)

抛出异常结束
6、每个栈帧都存储了:

  • 局部变量表
  • 操作数栈(表达式栈)
  • 动态链接(指向运行时常量池的方法引用)
  • 方法返回地址(方法正常退出或者异常退出的定义)
  • 一些附加信息
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值