有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

有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) 个答案

  1. # 1 楼答案

    基本上他们所说的JIT编译需要时间。HotSpot实际上编译了两次代码—首先未优化,然后对常用部分进行优化

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

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