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

ASi*_*ngh 0 java jit jvm

我指的是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根据程序的执行编译代码,因此编译速度很快.并且代码将被优化,因此执行时间也将很快.

他们想用这一点表达什么?我不是很了解它.

Den*_*kiy 5

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

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

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

  • "*HotSpot实际上编译了两次代码*"=>或更多 - 当JVM收集有关它如何运行的更多信息时,可以多次编译一个方法.在某些情况下它也可以反编译. (2认同)