Java虚拟机栈
Java虚拟机栈和他所属线程的生命周期是相同的,即和线程一起创建,也一起销毁。
Java虚拟机栈是Java方法执行的内存模型。
与对象内存分配关系最紧密的是堆和栈,而其中的栈就是Java虚拟机栈。
栈帧
每个方法执行时会创建一个相对应的栈帧,用来存储方法的局部变量表,操作数栈,方法出口,动态链接等。方法从开始到执行完毕,就标志着栈帧的入栈和出栈。
类似于每个方法的一个唯一标记。
局部变量表
局部变量表是在栈帧中存储的,也是程序猿最为关注的地方,局部变量表中存储了当前方法的所有变量,包括基本数据类型,引用类型,returnAddress类型(为字节码指令服务的,指向字节码指令的地址)。
异常状况
如果线程请求的栈的深度过大,会抛出StacckOverflowError异常。
如果扩展时无法申请到足够的内存,会抛出OutOfMemoryError异常。