Open Goverse opened 3 years ago
1.栈帧: 每个方法执行的时候,java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态连接,方法出口等信息。 默认1M。
2.局部变量表 存放编译期可知的各种java虚拟机基本类型,引用类型,第一个对象是this。
3.操作数栈 用于运算的临时数据存储区,通过压栈和弹栈来访问。
4.动态连接 将符号引用转换为直接引用的过程。
5.方法出口 上一个方法执行地址。
在《Java虚拟机规范》中,对这个内存区域规定了两类异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出OutOfMemoryError异常。
虚拟机栈构成与作用:
1.栈帧: 每个方法执行的时候,java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态连接,方法出口等信息。 默认1M。
2.局部变量表 存放编译期可知的各种java虚拟机基本类型,引用类型,第一个对象是this。
3.操作数栈 用于运算的临时数据存储区,通过压栈和弹栈来访问。
4.动态连接 将符号引用转换为直接引用的过程。
5.方法出口 上一个方法执行地址。
在《Java虚拟机规范》中,对这个内存区域规定了两类异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出OutOfMemoryError异常。