1.0 KiB
1.0 KiB
线程私有 生命周期与线程相同,描述的时Java方法执行的线程内存模型,每个方法执行时都会同步创建一个帧栈(Stack Frame)存储局部变量表,操作数栈,动态链接,方法出口等,一个方法被调用到执行完毕,就对应一个帧栈在虚拟机入栈到出栈
局部变量表
存放编译器可知的基本数据类型,对象引用,returnAddress类型(执行一条字节码指令的地址) 这些变量占据的存储空间通过局部变量槽(Slot)表示,Long和Double占据两个变量槽,其余的只占用一个 局部变量表的内存空间在编译期间完成分配,进入方法时,该方法分配的局部变量空间是完全确定的,方法运行期间不会改变局部变量表的大小
异常状况
StackOverflowError 线程请求的栈深度超过虚拟机所允许的深度 OutOfMemoryError 栈容量可以动态扩展,栈扩展无法申请到足够内存 HotSpot栈容量无法动态扩展,线程申请栈空间失败是会OOM异常