Goverse / BohemianRhapsody

Mama, life had just begun
0 stars 0 forks source link

虚拟机栈(Java栈)的构成? #5

Open Goverse opened 3 years ago

Goverse commented 3 years ago

虚拟机栈构成与作用:

1.栈帧: 每个方法执行的时候,java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态连接,方法出口等信息。 默认1M。

2.局部变量表 存放编译期可知的各种java虚拟机基本类型,引用类型,第一个对象是this。

3.操作数栈 用于运算的临时数据存储区,通过压栈和弹栈来访问。

4.动态连接 将符号引用转换为直接引用的过程。

5.方法出口 上一个方法执行地址。

在《Java虚拟机规范》中,对这个内存区域规定了两类异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出OutOfMemoryError异常。