0

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

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

4

1 回答 1

5

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

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

在解释模式下,没有 JIT,VM 只是立即开始解释代码,因此它启动得更快,但性能更差。

于 2013-02-16T07:32:42.260 回答