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