深入理解虚拟机--虚拟机栈篇【图文】

虚拟机栈

1、此区域是线程私有的,生命周期与线程相同。每个方式执行会创建一个栈桢,一个栈桢又包括局部变量表、操作数栈、动态链接、方法返回地址和一些附加信息,其中动态链接、方法返回地址和一些附加信息合起来又叫做桢数据区;
深入理解虚拟机--虚拟机栈篇【图文】
2、 局部变量表:
①编译期可知的各种基本数据结构、对象引用、返回地址,存储一个局部变量和方法参数。

② 基本单位变量槽(varriable Slot): 0位索引的Slot默认是用于传递方法所属对象实例的引用;一个Slot可以存放boolean、byte、char、int、float、reference、returnAddress 8中类型,其中long和double针对32位和64位系统不一样,64位一个long或double都是占两个槽。

3、 操作数栈:在数字之间做运算时,将数字取出放入到操作数栈中,进行相应的计算,并将计算结果返回到局部变量表中;

4、 动态链接:指向运行时常量池中该栈帧所属方法的引用;

5、方法返回值地址:
深入理解虚拟机--虚拟机栈篇【图文】
深入理解虚拟机--虚拟机栈篇【图文】
6、错误:
栈内存溢出:StackOverFlowError

堆内存溢出:OutOfMemoryError

其中:还有一种说法是内存泄漏指的是慢慢的内存就满了,还有一个是内存溢出指的是即将要加入堆中的对象过大,导致不可以再加入其中报的错误。
① 栈内存溢出产生原因:线程请求栈深度大于虚拟机栈允许深度;
② 堆内存溢出产生原因:虚拟机栈动态扩展超过极限,不断创建对象,导致堆溢出。

尚硅谷深解Java虚拟机(JVM)内存结构各部分总结【三层划分】https://blog.****.net/qq_43012792/article/details/107358550
更新中…
有用点个关注,手留余香!