* 每个线程独立的执行方法 * 每个方法在执行过程中生成一个栈帧 {{:pasted:20180406-172924.png}} ==== 局部变量表(核心结构) ==== 存放方法的参数,以及方法内定义的局部变量 ==== 操作数栈(核心结构)==== 执行虚拟机指令时需要的数据会先被放入这个栈中 虚拟机的指令(push、load、store)等。就是将数据在操作数栈、局部变量表之间移动 push 100 // 将100 放入操作数栈顶 store // 将操作数栈顶的数据放入局部变量表 load // 将局部变量表中的数据放入操作数栈顶 iadd // 将操作数栈顶的2个数据相加,并放入栈顶 ==== 方法调用 ==== 如何确认调用哪个方法??? * 编译时确认 * 参数不同(重载)。编译阶段就可以确认调用哪个函数 * 运行时确认 * 继承(重写)。运行时才能决定调用哪个函数。