执行引擎子系统——JVM之五

1、JVM经过执行引擎来完成字节码的执行,在执行过程当中JVM采用的是本身的一套指令系统,每一个线程在建立后,都会产生一个程序计数器(pc)和栈(Stack)。优化

pc:存放了下一条将要执行的指令;spa

Stack:存放Stack Frame(栈帧),最上面的表示为当前正在执行的方法。每一个方法的执行都会产生Stack Frame,Stack Frame中存放了传递给方法的参数、方法内的局部变量以及操做数栈;线程

局部变量表:存放参数、局部变量;对象

操做数栈:存放指令运算的中间结果;接口

指令负责从操做数栈中弹出参与运算的操做数,指令执行完毕后再将计算结果压回到操做数栈;内存

当方法执行完毕后则从Stack中弹出,继续其余方法的执行。ci

 

在执行方法时JVM提供了invokestatic、invokevirtual、invokeinterface和invokespecial四种指令来执行get

(1)invokestatic:调用类的static方法it

(2) invokevirtual: 调用对象实例的方法编译

(3) invokeinterface:将属性定义为接口来进行调用

(4) invokespecial: JVM对于初始化对象(Java构造器的方法为:<init>)以及调用对象实例中的私有方法时。

 

 

2、执行技术

主要的执行技术有:解释,即时编译,自适应优化、芯片级直接执行

(1)解释:属于第一代JVM;

(2)即时编译:JIT属于第二代JVM;

(3)自适应优化:(目前Sun的HotspotJVM采用这种技术)则吸收第一代JVM和第二代JVM的经验,采用二者结合的方式。开始对全部的 代码都采起解释执行的方式,并监视代码执行状况,而后对那些常常调用的方法启动一个后台线程,将其编译为本地代码,并进行仔细优化。若方法再也不频繁使用, 则取消编译过的代码,仍对其进行解释执行;

(4)芯片级直接执行:内嵌在芯片上,用本地方法执行Java字节码。

 

想深刻了解JVM内存分配,请结合 http://hllvm.group.iteye.com/group/wiki/3053-JVM 这篇文章

相关文章
相关标签/搜索