有JIT和没有JIT的JVM之间的java差异
我指的是Oracle的以下文档:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/underst_jit.html#wp1080014
在“1.JRockit JVM运行JIT编译”一节中提到,对于没有JIT的JVM,JIT JVM有更多的启动时间和更少的执行时间,反之亦然
我很困惑,因为据我所知,JIT是根据程序的执行来编译代码的,因此编译速度很快。代码将得到优化,因此执行时间也将很快
他们想用这一点说明什么?我没有完全理解它
# 1 楼答案
基本上他们所说的JIT编译需要时间。HotSpot实际上编译了两次代码—首先未优化,然后对常用部分进行优化
因此,当您的程序启动时,根据VM类型,它首先以解释模式运行字节码,或者等待字节码编译并切换到编译版本,然后如果代码经常使用,则通过更多优化再次编译。这一切都需要资源和时间,因此启动速度较慢,但当程序预热时,运行速度很快
在解释模式下,如果没有JIT,VM只会立即开始解释代码,因此启动速度更快,但性能更差