有和没有JIT的JVM之间的区别

时间:2013-02-16 07:17:22

标签: java jvm jit

我指的是Oracle的以下文档:

http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/underst_jit.html#wp1080014

在“1.Jackockit JVM运行JIT编译”一节中提到,JIT JVM具有更多的启动时间和更少的执行时间,反之亦然,对于没有JIT的JVM。

我很困惑,因为据我所知,JIT根据程序的执行编译代码,因此编译速度很快。并且代码将被优化,因此执行时间也将很快。

他们想用这一点表达什么?我没有理解它。

1 个答案:

答案 0 :(得分:5)

基本上他们说JIT编译需要时间。 HotSpot实际上编译了两次代码 - 首先是未优化的,然后是经常使用的部分的优化。

因此,当您的程序启动时,根据VM类型,它首先在解释模式下运行字节码或等待它编译并切换到编译版本,然后如果频繁使用代码,则再次使用更多优化进行编译。这一切都需要资源和时间,因此启动速度较慢,但​​是当程序预热时,它会快速运行。

在解释模式下,如果没有JIT,VM就会立即开始解释代码,因此启动速度更快,但性能更差。