有人说栈区存放引用,这种说法并不准确。
public void Method1() { int i = 4; int y = 2; class1 cls1 = new class1(); }
java虚拟机栈是线程私有,他的生命周期与线程相同,每个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈道出栈的过程。
局部变量表存放了编译器可知的各种基本数据类型、对象引用(可能是句柄或者指针)。局部变量表所需的空间是在编译期间完成的(64位long、double占用2个Slot,其它数据类型只占用一个),运行期间不会改变。
以上摘自《深入理解java虚拟机》
另外可以深入了解栈帧。
时间: 2024-10-21 03:42:12