java 内存区域中的栈

时间:2023-03-09 15:06:35
java 内存区域中的栈

有人说栈区存放引用,这种说法并不准确。

public void Method1()
{
int i = 4;
int y = 2;
class1 cls1 = new class1();
}

java 内存区域中的栈

  java虚拟机栈是线程私有,他的生命周期与线程相同,每个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈道出栈的过程。

  局部变量表存放了编译器可知的各种基本数据类型、对象引用(可能是句柄或者指针)。局部变量表所需的空间是在编译期间完成的(64位long、double占用2个Slot,其它数据类型只占用一个),运行期间不会改变。

  以上摘自《深入理解java虚拟机》

  另外可以深入了解栈帧。