发布网友
共2个回答
热心网友
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的钱元素。栈制存储了方法的网部变最表、操作数栈、动态连接和方法返回地址等信息。每个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机里面从入栈到出栈的过程。
每一个栈帧都包括了局部变量表、操作数栈、方法返回地址和一些额外的附加信息,在编译程序代码的时候,栈帧中需要多大的局部变量表、多深的操作数栈都已经完全确定了,并且写入到方法表的Code属性之中,因此一个栈帧需要分配多少内存, 不会受到程序运行期交最数据的影响,而仅仅取决于具体的虚拟机实现,
热心网友
错,int a = add(1,2)
执行的时候 无论如何 是main 方法 先入栈A,然后再是add(1,2) 入栈A,然后add(1,2)在栈A顶,然后里面进行操作。return 一个 3 回来,所以现在add(1,2)出栈A了,继续执行main()方法,现在int a ,3入栈B,然后将3弹出栈B store到 a。
这里栈A 是虚拟机栈,栈B是操作数栈。