1 栈
栈是一种“操作受限”的线性表,只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性。
2 Java虚拟机栈
2.1 定义
Java 虚拟机栈描述的是 Java 方法执行的内存模型,用于存储栈帧。线程启动时会创建虚拟机栈,每个方法在执行时会在虚拟机栈中创建一个栈帧,用于存储局部变量表、操作数栈、动态连接、方法返回地址、附加信息等信息。每个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中的入栈(压栈)到出栈(弹栈)的过程。
- 每个线程运行需要的内存空间,称为虚拟机栈;
- 每个栈由多个栈帧组成,对应着每次方法调用所占用的内存;
- 栈帧:每个方法运行时需要的内存,一个栈帧表示一个方法的调用;
- 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法;
2.2 实例
说明:设置一个简单的Demo,主函数调用method1,method1调用method2,我们观察每个方法入栈的顺序及其它们之间的先后顺序。
public class Demo1_1 {
public static void main(String[] args) throws InterruptedExce